我制作了简单的剧本:
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()
但是按任意键的绑定不起作用。我按任意键都没有发生任何事情。你知道为什么吗?
答案 0 :(得分:2)
您需要调用bind
parent
方法,该方法是对代表主窗口的tkinter.Tk
实例的引用:
parent.bind('<Key>', lambda e: print("pressed any key"))
self.bind
正在调用您创建的bind
实例的tkinter.Frame
方法:
Frame.__init__(self, parent, bg = 'red')
答案 1 :(得分:0)
绑定似乎不起作用的原因是你附加绑定的框架没有键盘焦点。只有具有键盘焦点的小部件才会对绑定做出反应。完成你所做的事情并绑定到一个框架是完全可以接受的,你只需要确保你绑定的小部件获得键盘焦点。
至少有两种解决方案:给框架键盘焦点(使用focus_set
方法),或者将绑定放在主窗口上,这是最初得到键盘焦点的。