我正在使用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”会使程序无响应。我尝试在其他窗口中执行此操作,甚至尝试使用其他键盘。
似乎没有任何作用。任何人都可以阐明这个问题吗?
答案 0 :(得分:3)
我不知道为什么return(
<button className="btn">
{{ __('messages.welcome') }}
</button>
)
起作用,但是关键事件被正式称为<6>
,请参见keysyms manual page:
<Key-…>
编辑根据Jason Harper和Mike - 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>
确实是特殊的指针设备/鼠标按钮。鬼。