gpt4 book ai didi

python - 键绑定(bind) 1-5 不工作 Tkinter

转载 作者:太空宇宙 更新时间:2023-11-03 10:50:28 25 4
gpt4 key购买 nike

我正在为一个小项目使用 Python 的 Tkinter,我需要使用数字键盘进行键绑定(bind)。但是,按键 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)

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

最佳答案

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

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

编辑 基于 Jason Harper的和Mike - SMT的建议,我查看了 Tk 源代码(在 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><5>确实是特殊的指针设备/鼠标按钮。偷偷摸摸的。

关于python - 键绑定(bind) 1-5 不工作 Tkinter,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51446419/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com