我已经阅读了许多其他似乎正在解决此问题的线程,但是它们都没有给我解决方法。该按钮的代码为:
#equals button
cmd = lambda x='=': self.Click(x)
self.equals_button = Button(self.MasterFrame, text='=', width=12,
height=2, command=cmd)
self.equals_button.grid(row=4, column=3, columnspan=3, sticky=W+E+N+S,
ipadx=2, padx=2, pady=2)
self.equals_button.bind("<KP_Enter>", cmd)
我曾尝试在代码的各个阶段在按钮上调用.focus_set(),但无济于事(这不起作用)。此代码显示在__init__
方法中。在该方法的早期,我在另一个必要的小部件实例上调用.focus_set()
。我也尝试在主框架上调用此绑定,并在主框架和按钮本身上调用focus_set。这些都没有帮助。我没有收到任何错误消息。 当我在鼠标上单击时,该按钮确实起作用。它根本不响应按下KP_Enter。我希望两者都做。
[在Kevin的帮助下,我解决了这个问题。绑定到<KP_Enter>
无效,但绑定到<Return>
仍在响应,尽管仍然无法正常工作。因此,我没有将self.equals_button
绑定,而是将Entry小部件本身绑定到<Return>
,这样,它仅在以.focus_set()
为焦点时才响应按键。 Entry小部件中的数据用作.bind()
参数中函数的参数。因此,现在我具有相同的功能绑定,首先是在按下Enter键时进入Entry小部件(这是我想要的,包括我系统上的键盘输入),然后在小部件实例化语句(button=Button(etc.etc.command=myfunc)
)中,这使我能够通过单击鼠标并按键盘上的Enter键,具有相同的功能。再次感谢Kevin。
您可能在Windows下编写代码。KP_Enter仅在Unix(Linux,bsd ...)上有效。在Windows下,Return和KP_Enter是相同的键:Return