我一直在尝试使用themed tkinter
库在我的python程序中bind
数字键盘键,但没有成功。我查阅了effbot上的文档,但没有提到绑定num pad键。上述事件绑定仅包括字母、数字键(字母键上方(、mouse button等。
以下代码绑定位于alohabet键上方的数字键:
>>> Frame.bind("1", callback) # binds Key 1, not num-pad Key 1
如何绑定数字键盘键?
在此文档中。提及:
例如,数字键盘上的数字2(键符号KP_2(和数字键盘上向下箭头(键符号KP_down(具有相同的键代码(88(,但不同的.keysym_num值(分别为65433和65458(。
所以你可以尝试使用:
Frame.bind("<KP_1>", callback)
然而,这在我的电脑上不起作用。另一种方法是绑定所有键,并检查keycode
以了解您是否按下了数字键盘键1:
def callback(e):
if e.keycode == 97:
print("you pressed num-pad 1")
Frame.bind("<Key>", callback)
@jizhihoaSAMA:已经提到
def callback(e):
if e.keycode == 97:
print("you pressed num-pad 1"))
并非所有系统都能保证相同的密钥码值("1"的密钥码在Windows中为"97",在Linux中为"87"(
因此,代替使用keycode
,可以使用char
:
def callback(e):
if int(e.char) in range(10):
print(f'you pressed {e.char}')
注意:按下数字键时也会调用回调(因为它们具有相同的字符值(。在某些情况下,这可能是可取的。