Tkinter 绑定无响应

问题描述 投票:0回答:2

我已经阅读了许多其他似乎正在解决此问题的线程,但是它们都没有给我解决方法。该按钮的代码为:

#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。我希望两者都做。

python user-interface lambda tkinter bind
2个回答
0
投票

[在Kevin的帮助下,我解决了这个问题。绑定到<KP_Enter>无效,但绑定到<Return>仍在响应,尽管仍然无法正常工作。因此,我没有将self.equals_button绑定,而是将Entry小部件本身绑定到<Return>,这样,它仅在以.focus_set()为焦点时才响应按键。 Entry小部件中的数据用作.bind()参数中函数的参数。因此,现在我具有相同的功能绑定,首先是在按下Enter键时进入Entry小部件(这是我想要的,包括我系统上的键盘输入),然后在小部件实例化语句(button=Button(etc.etc.command=myfunc))中,这使我能够通过单击鼠标并按键盘上的Enter键,具有相同的功能。再次感谢Kevin。


0
投票

您可能在Windows下编写代码。KP_Enter仅在Unix(Linux,bsd ...)上有效。在Windows下,Return和KP_Enter是相同的键:Return

© www.soinside.com 2019 - 2024. All rights reserved.