Tkinter <kp_enter>绑定无响应</kp_enter>

时间:2013-10-02 16:47:48

标签: python user-interface lambda tkinter bind

我已经阅读了一些似乎正在处理这个问题的其他一些线程,但是没有一个给我一个修复。相关按钮的代码是:

#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()。我也尝试在Master框架上调用此绑定,以及在Master框架和按钮本身上的focus_set。这些都没有帮助。我没有收到任何错误消息。     单击鼠标时按钮可以正常工作。它只是不响应按下KP_Enter。我希望它能做到这两点。

2 个答案:

答案 0 :(得分:0)

在凯文的帮助下,我解决了这个问题。绑定到<KP_Enter>并不起作用,但绑定到<Return>正在响应,但仍然无法正常工作。因此,我没有绑定self.equals_button,而是将Entry小部件本身绑定到<Return>,这样它只会在关注.focus_set()时响应按键。     Entry小部件中的数据用作.bind()参数中函数的参数。所以现在我有相同的函数绑定,首先是Enter小部件,当我按Enter键(这包括键盘输入我的系统,这是我想要的),再次在小部件实例化语句(button=Button(etc.etc.command=myfunc))中,允许通过单击鼠标并按键盘输入键,我具有相同的功能。再次感谢凯文。

答案 1 :(得分:0)

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