主题tkinter中的数字键盘绑定



我一直在尝试使用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}')

注意:按下数字键时也会调用回调(因为它们具有相同的字符值(。在某些情况下,这可能是可取的。

最新更新