我使用bind()设置键的动作,但是当我想向numpad上的数字键添加动作时,它不起作用。如果我希望它能工作,代码应该如何显示?
答案 0 :(得分:0)
它实际上取决于 NumLock 键的状态。
tkinter event
对象具有三个属性:char
,keysim
和keycode
,以标识按下了哪个键。
关注键盘数字,将 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),char
和keysim
是相同的,但是keycode
对于数字键盘和字母上方的正常行。例如,数字行中的 2 具有keycode
50
,而数字键盘中的 2 具有keycode
{{1 }}。
但是,在 NumLock 关闭的情况下,这些键与具有相同含义的其他键没有区别。例如,小键盘上的普通 End 和 1 下的一个都具有98
keycode
。
因此,要检查数字键盘上的 1 键,而不考虑 NumLock 的状态如何,您需要检查{{1} }}或35
。但是,这确实意味着按常规的 End 键将具有相同的效果,我不知道有什么方法可以阻止此操作。
我使用以下代码检查了上面发布的所有值:
keycode