Tkinter - 使用Keybind调用函数添加变量

时间:2015-05-04 15:37:42

标签: python python-2.7 tkinter

当我在Tkinter中使用KeyBind调用方法时,例如activity,当它调用OnDismissListener时,它似乎会添加第二个变量,就像它正在调用Dialog一样。

虽然它有所不同,但当我打印parent.bind('<Return>', self.login)时,它会打印self.login。现在我猜测这是从它调用的项目,或者是调用它的事件,但是当我多次执行它时,它显示了同样的事情。

通过在keybinds调用的所有方法中添加self.login(var)来解决问题,但这有什么重要意义吗?我需要在我的方法中添加一些东西吗?如果不是,它是为了什么?

2 个答案:

答案 0 :(得分:2)

在非常有用的Effbot Tkinter guide中,它说明了以下内容(强调我的):

widget.bind(event, handler)
     

如果小部件中出现与event描述匹配的事件,则   使用描述事件的对象调用给定的handler

您将其视为<Tkinter.Event instance at 0x...>。它有各种属性,描述发生了什么(例如鼠标指针的xy位置,widget本身等等。)

答案 1 :(得分:1)

当绑定触发时,它总是传递一个对象,该对象表示导致回调被调用的事件。这包含诸如事件的x,y坐标,按下的键,事件发生时间的时间戳等信息。

您并不总是需要此信息,但始终会将其提供给回调。您需要添加event关键字参数:

def myCallback(event=None):
    <your code here>

...
someWidget.bind("<1>", myCallback)