键绑定 1-5 不工作 Tkinter

Key Bindings 1-5 not working Tkinter

我正在使用 Python 的 Tkinter 进行一个小项目,我需要使用数字键盘进行键绑定。但是,按键 1、2、3、4 和 5 没有响应。所有其他键都可以正常工作。 例如:

from tkinter import *
window = Tk()
window.title('Key Test')
c = Canvas(window, height=500, width=500)
c.pack()
word = c.create_text(250, 250, text='Spam')
def transformation(event):
    c.itemconfig(word, text='Spamalot')
c.bind_all('<6>', transformation)

上面的代码工作得很好。但是在绑定中放置“5”而不是“6”会使程序无响应。我曾尝试在其他 windows 中这样做,我什至尝试过使用不同的键盘。
似乎没有任何效果。任何人都可以阐明这个问题吗?

我不知道为什么 <6> 有效,但关键事件被正式称为 <Key-…>,请参阅 keysyms manual page:

c.bind_all('<Key-5>', transformation)

EDIT 根据 Jason Harper's and Mike - SMT 的建议,我查看了 Tk 源代码(在 generic/tkBind.c 中),它确实是这样做的:

    if ((*field >= '1') && (*field <= '5') && (field[1] == '[=11=]')) {
        if (eventFlags == 0) {
            patPtr->eventType = ButtonPress;
            eventMask = ButtonPressMask;
        } else if (eventFlags & KEY) {
            goto getKeysym;
        } else if (!(eventFlags & BUTTON)) {
…
        }
        patPtr->detail.button = (*field - '0');
    } else {

    getKeysym:
        patPtr->detail.keySym = TkStringToKeysym(field);

所以 <1><5> 确实是特殊的指针 device/mouse 按钮。偷偷摸摸的。