我如何识别正在点击数字键盘上的键? [Python tkinter]

时间:2018-09-06 07:35:01

标签: python tkinter

我使用bind()设置键的动作,但是当我想向numpad上的数字键添加动作时,它不起作用。如果我希望它能工作,代码应该如何显示?

1 个答案:

答案 0 :(得分:0)

它实际上取决于 NumLock 键的状态。

tkinter event对象具有三个属性:charkeysimkeycode,以标识按下了哪个键。

关注键盘数字,将 NumLock 设置为ON时,这些数字是(0-9):

char    keysim      keycode
'0'     '0'         96
'1'     '1'         97
'2'     '2'         98
'3'     '3'         99
'4'     '4'         100
'5'     '5'         101
'6'     '6'         102
'7'     '7'         103
'8'     '8'         104
'9'     '9'         105

关闭 NumLock 时,这些值为(0-9):

char    keysim      keycode
''      'Insert'    45
''      'End'       35
''      'Down'      40
''      'Next'      34
''      'Left'      37
''      'Clear'     12
''      'Right'     39
''      'Home'      36
''      'Up'        38
''      'Prior'     33

现在,对于数字(因此 NumLock ON),charkeysim是相同的,但是keycode对于数字键盘和字母上方的正常行。例如,数字行中的 2 具有keycode 50,而数字键盘中的 2 具有keycode {{1 }}。

但是,在 NumLock 关闭的情况下,这些键与具有相同含义的其他键没有区别。例如,小键盘上的普通 End 1 下的一个都具有98 keycode

因此,要检查数字键盘上的 1 键,而不考虑 NumLock 的状态如何,您需要检查{{1} }}或35。但是,这确实意味着按常规的 End 键将具有相同的效果,我不知道有什么方法可以阻止此操作。


我使用以下代码检查了上面发布的所有值:

keycode