按键绑定1-5无法正常工作

时间:2018-07-20 16:01:45

标签: python tkinter key-bindings

我正在使用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”会使程序无响应。我尝试在其他窗口中执行此操作,甚至尝试使用其他键盘。
似乎没有任何作用。任何人都可以阐明这个问题吗?

1 个答案:

答案 0 :(得分:3)

我不知道为什么return( <button className="btn"> {{ __('messages.welcome') }} </button> ) 起作用,但是关键事件被正式称为<6>,请参见keysyms manual page

<Key-…>

编辑根据Jason HarperMike - SMT的建议,我查看了Tk源代码(在c.bind_all('<Key-5>', transformation) 中),的确这个:

generic/tkBind.c

因此 if ((*field >= '1') && (*field <= '5') && (field[1] == '\0')) { 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>确实是特殊的指针设备/鼠标按钮。鬼。