[英]How to handle, when tkinter window gets focus
我有这个代码:
from tkinter import *
w = Tk()
w.protocol('WM_TAKE_FOCUS', print('hello world'))
mainloop()
它只打印一次hello world
,然后停止工作。 没有更多的hello world
基本上WM_TAKE_FOCUS
不起作用。
您可以将函数绑定到<FocusIn>
事件。 当您绑定到根窗口时,绑定将应用于根窗口中的每个窗口小部件,因此,如果您只想在窗口作为整体获得焦点时执行某些操作,则需要将event.widget
与根窗口进行比较。
例如:
import Tkinter as tk
def handle_focus(event):
if event.widget == root:
print("I have gained the focus")
root = tk.Tk()
entry1 = tk.Entry(root)
entry2 = tk.Entry(root)
entry1.pack()
entry2.pack()
root.bind("<FocusIn>", handle_focus)
root.mainloop()
“请注意,不推荐使用WM_SAVE_YOURSELF,并且Tk应用程序无法正确实现WM_TAKE_FOCUS或_NET_WM_PING,因此WM_DELETE_WINDOW是唯一应该使用的”。 这是一个链接 ! 如果你需要一直保持tkinter焦点:
w.wm_attributes("-topmost", 1)
做得很好。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.