我做了一个简单的脚本:
from tkinter import *
class MyFrame(Frame):
def __init__(self, parent = None):
Frame.__init__(self, parent, bg = 'red')
self.pack(fill=BOTH, expand=YES)
self.bind('<Key>', lambda e: print("pressed any key"))
root = Tk()
root.geometry("300x200")
f = MyFrame(root)
root.mainloop()
但按任何键的绑定都不起作用。我按任何键都不会发生什么事。你知道为什么吗?在
绑定似乎不起作用的原因是您附加绑定的框架没有键盘焦点。只有具有键盘焦点的小部件才会对绑定做出反应。做你所做的并绑定到一个框架是完全可以接受的,你只需要确保你绑定的小部件得到键盘的焦点。在
至少有两种解决方案:为框架提供键盘焦点(使用
focus_set
方法),或者将绑定放在主窗口上,这是最初获得键盘焦点的地方。在您需要调用
parent
的bind
方法,它是对表示主窗口的tkinter.Tk
实例的引用:
^{pr2}$self.bind
正在调用您创建的tkinter.Frame
实例的bind
方法:相关问题 更多 >
编程相关推荐