马上注册,结交更多好友,享用更多功能^_^
您需要 登录 才可以下载或查看,没有账号?立即注册
x
本帖最后由 Wirror 于 2021-7-20 07:08 编辑
# 这段代码绑定Enter键触发的事件为ok,为什么窗口打开后还没按下回车ok就被调用了(代码从front_sell进入的,没有其他问题),
而且为什么在ok函数中没法get文本框的字符呢?
另:写在类中的方法中参数event和master是干什么用的,一直没有弄明白from tkinter import *
class Application_ui(Frame):
def __init__(self, master=None):
Frame.__init__(self, master)
self.master.title('Form1')
self.master.geometry('1424x862')
self.createWidgets()
def createWidgets(self):
self.top = self.winfo_toplevel()
self.style = Style()
front_sell_window.bind('<KeyPress-Return>', self.ok())
class Application(Application_ui):
#这个类实现具体的事件处理回调函数。界面生成代码在Application_ui中。
def __init__(self, master=None):
Application_ui.__init__(self, master)
def ok(self): # todo 按下回车后的操作:
aaa = 'aaa'
print(aaa)
def front_sell(t):
global front_sell_window
front_sell_window = Tk()
global top
top = t
front_sell_window.protocol('WM_DELETE_WINDOW', me_quit)
Application(front_sell_window).mainloop()
1. 代码第15行 front_sell_window.bind('<KeyPress-Return>', self.ok())
bind函数要求传入的是一个函数的引用,注意,是函数的引用
其实就是传入一个函数名
而你写了self.ok(),导致代码运行到这里就自动调用self.ok这个函数,所以出错。
2.由于你的错误,gui窗口在初始化之前就调用了self.ok函数,文本框都还没准备好呢,怎么get内容呢
3.参数event:bind方法在监视到event事件后,会调用传入的函数(就是self.ok)
而且会自动传入event对象,这个对象包含了发出事件的对象,发出事件的坐标等待
而master参数,我觉得应该是父组件(就是上一层的组件,比如Tk类的对象)
|