【问题标题】:Tkinter <Return> function not workingTkinter <Return> 功能不起作用
【发布时间】:2018-03-05 00:11:31
【问题描述】:

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

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 到整个代码(用于计算学校成绩)。

【问题讨论】:

  • 什么不起作用?你实际上并没有说过。
  • 当我按下回车键时按钮没有被执行。

标签: python tkinter return bind


【解决方案1】:

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

您没有将事件绑定到按钮命令,而是直接绑定到命令。当您在父级上创建绑定时,它可用于所有子小部件,Entry...

你可以用这个:

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 会使用 one 参数调用该函数:事件。它包含有关触发的操作的信息,例如鼠标的坐标,或正确处理事件的任何相关细节。

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

然后,当您使用按钮和绑定中的函数时,必须将其声明为 可选参数,并具有默认值:None,因为按钮在调用函数时不会生成这个event参数。

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

【讨论】:

  • 不,在 tkinter 中你只需要绑定 不需要密钥 - effbot.org/tkinterbook/tkinter-events-and-bindings.htm 但你是正确的计算没有 event 参数
  • 但是当我现在手动(用鼠标)按下按钮时,它显示-Exception in Tkinter callback Traceback (most recent call last): File "C:\Python36\lib\tkinter\__init__.py", line 1699, in __call__ return self.func(*args) TypeError: calculate() missing 1 required positional argument: 'event'
  • 是的,答案是固定的,确实,如果您使用按钮中的功能,event 没有给出...所以这里需要一个默认参数
  • 如何编码以便Enter 键和手动按下它会起作用?
  • 你可以用def calculate(self, event=None)代替我的第一个代码建议
猜你喜欢
  • 1970-01-01
  • 2023-03-09
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多