当我在Tkinter中使用KeyBind调用方法时,例如activity
,当它调用OnDismissListener
时,它似乎会添加第二个变量,就像它正在调用Dialog
一样。
虽然它有所不同,但当我打印parent.bind('<Return>', self.login)
时,它会打印self.login
。现在我猜测这是从它调用的项目,或者是调用它的事件,但是当我多次执行它时,它显示了同样的事情。
通过在keybinds调用的所有方法中添加self.login(var)
来解决问题,但这有什么重要意义吗?我需要在我的方法中添加一些东西吗?如果不是,它是为了什么?
答案 0 :(得分:2)
在非常有用的Effbot Tkinter guide中,它说明了以下内容(强调我的):
widget.bind(event, handler)
如果小部件中出现与
event
描述匹配的事件,则 使用描述事件的对象调用给定的handler
。
您将其视为<Tkinter.Event instance at 0x...>
。它有各种属性,描述发生了什么(例如鼠标指针的x
和y
位置,widget
本身等等。)
答案 1 :(得分:1)
当绑定触发时,它总是传递一个对象,该对象表示导致回调被调用的事件。这包含诸如事件的x,y坐标,按下的键,事件发生时间的时间戳等信息。
您并不总是需要此信息,但始终会将其提供给回调。您需要添加event
关键字参数:
def myCallback(event=None):
<your code here>
...
someWidget.bind("<1>", myCallback)