我已经阅读了很多其他问题的答案,但他们不工作......所以请不要标记 重复的 ... 我是一名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到整个代码(计算学校成绩)。
答案 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