Dav*_*ger 1 python tkinter function
是否可以通过按下按钮和事件来运行函数?当我尝试通过按下按钮来运行此功能时,可以理解的是,它给出了错误
类型错误:listFiller() 缺少 1 个必需的位置参数:“事件”。
找不到类似的问题,但也许这只是我缺乏编程知识。
代码:
class MyClass:
def __init__(self, master):
self.myButton = tk.Button(master, text='ok', command=self.listFiller)
self.myButton.pack()
self.myEntry = tk.Entry(master)
self.myEntry.bind("<Return>",self.listFiller)
self.myEntry.pack()
def listFiller(self, event):
data = self.myEntry.get()
print(data)
Run Code Online (Sandbox Code Playgroud)
尝试设置event=None该函数,然后仅从该函数传递事件bind,例如:
self.myButton = tk.Button(master, text='ok', command=self.listFiller)
.....
self.myEntry.bind("<Return>", lambda e: self.listFiller()) # Same as lambda e: self.listFiller(e)
def listFiller(self, event=None):
data = self.myEntry.get()
Run Code Online (Sandbox Code Playgroud)
这样,当您按下按钮时,event将被视为None。但是,当bind被触发(即被Enter击中)时,event会隐式传递(即使您显式传递它也可以)作为e.
因此,在您了解了其背后的工作原理之后,即使您删除lambda,e仍然会被传递,因为event它是隐式发生的。
self.myEntry.bind("<Return>",self.listFiller) # As mentioned by Lafexlos
Run Code Online (Sandbox Code Playgroud)
尽管请记住,当您按下 tkinter 按钮时,您不能使用event、 likeevent.keysym或任何其他属性中的任何属性,但如果您使用 key 则可以使用Enter。