键绑定 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 按钮。偷偷摸摸的。
我正在使用 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 按钮。偷偷摸摸的。