我正在制作一个tkinter应用程序,它可以响应数字键盘上的单个按键。我发现处理numpad按键的tk事件是一件非常痛苦的事情,因为我尝试过的所有平台都会导致完全不同的事件(windows、mac、linux),而且我能找到的文档要么不完整要么就是错误。我的主要文档源是http://infohost.nmt.edu/tcc/help/pubs/tkinter/web/key-names.html
只有Linux看起来“正常”,并允许您获取tkkeysym
名称,例如“KPˉEnter”。然而,Windows要求您查看keysym_num
或{keycode
,它们又完全不同了。在
例如,numpad上的'0'键:
event.keysym == 'KP_0'
event.keysym_num == 65379
或者启用Numlock时:event.keycode == 96
event.keycode == 5374000
我是不是漏了点东西,还是真的这么乱?有没有更好的解决办法我忽略了?
在我的代码中,我在主窗口上绑定了keyup/down事件:
class NumpadmadnessWindow(tkinter.Tk):
def __init__(self):
super().__init__()
# ...
self.bind("<KeyPress>", self.keypress)
self.bind("<KeyRelease>", self.keyrelease)
出于调试目的,我的事件处理程序如下所示:
^{pr2}$一个小的可运行的测试应用程序的完整代码我认为并不真正相关,但可以在这里找到:https://gist.github.com/irmen/2c9d6bb0afb16b464805410c108a2885
目前没有回答
相关问题 更多 >
编程相关推荐