密钥绑定在tkin中不起作用

2024-03-28 10:17:41 发布

您现在位置:Python中文网/ 问答频道 /正文

我做了一个简单的脚本:

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

但按任何键的绑定都不起作用。我按任何键都不会发生什么事。你知道为什么吗?在


Tags: fromimportself脚本noneinittkinterdef
2条回答

绑定似乎不起作用的原因是您附加绑定的框架没有键盘焦点。只有具有键盘焦点的小部件才会对绑定做出反应。做你所做的并绑定到一个框架是完全可以接受的,你只需要确保你绑定的小部件得到键盘的焦点。在

至少有两种解决方案:为框架提供键盘焦点(使用focus_set方法),或者将绑定放在主窗口上,这是最初获得键盘焦点的地方。在

您需要调用parentbind方法,它是对表示主窗口的tkinter.Tk实例的引用:

parent.bind('<Key>', lambda e: print("pressed any key"))

self.bind正在调用您创建的tkinter.Frame实例的bind方法:

^{pr2}$

相关问题 更多 >