Tkinter <return>功能不起作用

时间:2017-09-23 15:30:11

标签: python tkinter return bind

我已经阅读了很多其他问题的答案,但他们工作......所以不要标记 重复 ... 我是一名Python自学者,在Python 3.6上运行Windows。 这是代码 -

self.btnCalc = Button(self, text = "Calculate", command=self.calculate, bd=10)
self.btnCalc.grid(row = 11, column = 5)
self.btnCalc.bind('<Return>', self.calculate)

This is the link到整个代码(计算学校成绩)。

1 个答案:

答案 0 :(得分:2)

我认为您希望在不单击按钮的情况下触发命令,因此您需要将事件绑定到主要窗口小部件self

您不会将事件绑定到按钮命令,而是直接绑定到命令。当您在父级上创建绑定时,它可供所有子窗口小部件使用,条目...

你可以用这个:

self.bind('<Return>', self.calculate) 
# or self.bind('<KP_Enter>', self.calculate) to trigger numpad Return

但是你的方法calculate必须有一个事件参数,即使你不使用它:

def calculate(self, event=None):

有关事件的说明

使用方法widget.bind(...)将函数绑定到事件时,tkinter使用一个参数调用该函数:事件。它包含有关触发操作的信息,如鼠标坐标或正确处理事件的任何相关详细信息。

你没有在你的函数中使用它(但是?),但是你需要声明它。

然后,当您使用按钮AND中的函数绑定时,它必须声明为可选参数,默认值为:None,因为命令在调用函数时,按钮内部不会生成此event参数。

http://effbot.org/tkinterbook/tkinter-events-and-bindings.htm