密钥绑定在tkinter中不起作用

时间:2014-05-31 02:17:23

标签: python tkinter

我制作了简单的剧本:

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()

但是按任意键的绑定不起作用。我按任意键都没有发生任何事情。你知道为什么吗?

2 个答案:

答案 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方法),或者将绑定放在主窗口上,这是最初得到键盘焦点的。