我试图将左右箭头键绑定到Tkinter中的一个事件,但是当我运行程序时,事件似乎没有触发。代码如下:
from Tkinter import *
main = Tk()
def leftKey(event):
print "Left key pressed"
def rightKey(event):
print "Right key pressed"
frame = Frame(main, width=100, height=100)
frame.bind('<Left>', leftKey)
frame.bind('<Right>', rightKey)
frame.pack()
frame.mainloop()
为什么这不起作用?
问题很简单,绑定到的帧没有键盘焦点。当您按下键盘上的键时,事件将以键盘焦点发送到小部件。默认情况下,帧没有键盘焦点。
在代码中添加以下行以将键盘焦点移动到帧:
尝试绑定到主变量:
我应该解释这一点,因为Tk知道绑定,因为主窗口有键盘焦点。正如@BryanOakley的回答所解释的,您也可以将键盘焦点设置到另一帧:
有关events and bindings at effbot的详细信息。
此外,您还可以重新编写该应用程序,使其成为
Tkinter.Frame
的子类,如下所示:相关问题 更多 >
编程相关推荐