【发布时间】:2018-02-26 07:30:06
【问题描述】:
这是一个非常简单的例子:
from Tkinter import *
import tkMessageBox
def quit(event):
exit()
root = Tk()
root.bind("<Escape>", quit)
#tkMessageBox.showinfo("title", "message")
root.mainloop()
如果我完全按原样运行代码,程序将在 Esc 被命中时终止。现在,如果我取消注释 tkMessageBox 行,则在关闭消息框后绑定将“丢失”,即按 Esc 将不再执行任何操作。这发生在 Python 2.7 中。您能否确认这是否也发生在您身上?并让我知道您的 Python 版本。
这是一种“绕过”问题的方法。这是一种不同的方法,但它可能会有所帮助:
from Tkinter import *
import tkMessageBox
def msg_test():
tkMessageBox.showinfo("title", "message")
def quit(event):
exit()
root = Tk()
root.bind("<Escape>", quit)
btn = Button(root, text="Check", command=msg_test); btn.pack()
root.mainloop()
通过单击按钮使用tkMessageBox,不会影响键绑定,即按 Esc 继续工作。
【问题讨论】:
-
你的注意力是否回到
root窗口? -
这个问题似乎适用于我的所有键盘事件以及 python 3.7
-
你的操作系统是什么?
-
@BryanOakley 我能够在 Windows 7 和 10 上重现该问题。
-
是的,我应用了焦点,甚至重复了绑定。没有效果。我正在使用 Windows 7。
标签: python events tkinter keyboard-events messagebox