Python 如何使用键绑定和按钮命令运行tkinter函数?

Python 如何使用键绑定和按钮命令运行tkinter函数?,python,function,tkinter,Python,Function,Tkinter,是否可以同时使用按钮按下和事件运行功能?当我试图通过按下按钮来运行此函数时,可以理解,它给出了一个错误 TypeError:listFiller()缺少1个必需的位置参数:“事件” 找不到类似的问题,但可能是因为我缺乏编程知识 代码: class-MyClass: 定义初始(自我,主): self.myButton=tk.Button(master,text='ok',command=self.listFiller) self.myButton.pack() self.myEntry=tk.En

是否可以同时使用按钮按下和事件运行功能?当我试图通过按下按钮来运行此函数时,可以理解,它给出了一个错误

TypeError:listFiller()缺少1个必需的位置参数:“事件”

找不到类似的问题,但可能是因为我缺乏编程知识

代码:

class-MyClass:
定义初始(自我,主):
self.myButton=tk.Button(master,text='ok',command=self.listFiller)
self.myButton.pack()
self.myEntry=tk.Entry(master)
self.myEntry.bind(“,self.listFiller)
self.myEntry.pack()
def列表填充器(自身、事件):
data=self.myEntry.get()
打印(数据)

尝试为函数设置
event=None
,然后仅从
bind
传递事件,如:

self.myButton=tk.Button(master,text='ok',command=self.listFiller)
.....
self.myEntry.bind(“,lambda e:self.listFiller())#与lambda e:self.listFiller(e)相同
def listFiller(自身,事件=无):
data=self.myEntry.get()
这样,当您按下按钮时,
事件
被视为
。但是,当触发
bind
时(即,按下Enter键),
事件
作为
e
隐式传递(即使显式传递也有效)

因此,在您了解了引擎盖后面的工作原理后,现在即使您移除
lambda
e
仍将作为
事件传递,因为它是隐式发生的

self.myEntry.bind("<Return>",self.listFiller) # As mentioned by Lafexlos
self.myEntry.bind(“,self.listFiller)#如Lafexlos所述


请记住,当您按下tkinter按钮时,您不能使用
event
中的任何属性,如
event.keysym
或任何东西,但如果您使用Enter键,它将起作用。

尝试为函数设置
event=None
,然后仅从
bind
传递事件,如:

self.myButton=tk.Button(master,text='ok',command=self.listFiller)
.....
self.myEntry.bind(“,lambda e:self.listFiller())#与lambda e:self.listFiller(e)相同
def listFiller(自身,事件=无):
data=self.myEntry.get()
这样,当您按下按钮时,
事件
被视为
。但是,当触发
bind
时(即,按下Enter键),
事件
作为
e
隐式传递(即使显式传递也有效)

因此,在您了解了引擎盖后面的工作原理后,现在即使您移除
lambda
e
仍将作为
事件传递,因为它是隐式发生的

self.myEntry.bind("<Return>",self.listFiller) # As mentioned by Lafexlos
self.myEntry.bind(“,self.listFiller)#如Lafexlos所述


尽管请记住,当您按下tkinter按钮时,您不能使用来自
事件的任何属性,如
事件.keysym
或任何东西,但如果您使用Enter键,它将起作用。

我认为在
绑定中不需要lambda。您可以直接使用
self.myEntry.bind(“,self.listFiller)
,这应该会自动传递
event
参数。@Lafexlos是的,也是这样。我想展示它背后的工作原理。我把这个加进去。谢谢您的提醒。我认为您在
绑定中不需要lambda。您可以直接使用
self.myEntry.bind(“,self.listFiller)
,这应该会自动传递
event
参数。@Lafexlos是的,也是这样。我想展示它背后的工作原理。我把这个加进去。谢谢你提到这件事。