Tkinter - 窗口失去焦点事件

9

tkinter窗口失去焦点时,是否有一些事件触发可以使用.bind方法绑定到tkinter窗口上?


2
可能是重复的问题:Tk/Tkinter:检测应用程序失去焦点 - Dmitry
1
请查看事件类型(因为@j_4321的链接已经失效)。 - martineau
1个回答

21
你要找的事件是 <FocusOut>
import tkinter as tk

def on_focus_out(event):
    if event.widget == root:
        label.configure(text="I DON'T have focus")

def on_focus_in(event):
    if event.widget == root:
        label.configure(text="I have focus")

root = tk.Tk()
label = tk.Label(width=30)
label.pack(side="top", fill="both", expand=True)

root.bind("<FocusIn>", on_focus_in)
root.bind("<FocusOut>", on_focus_out)

root.mainloop()

1
我正在使用 window.overrideredirect(True),但是它不起作用。 - Jakub Bláha
1
@JakubBláha:你需要在你的问题中添加那个细节。 - Bryan Oakley
虽然Bryan Oakley是正确的,你需要提到这些细节,但对我来说它仍然完美地工作。我不知道它是否取决于操作系统(这也是你问题中缺失的信息),但它在Windows 10 Home(Python 3.7,Tcl/Tk 8.5)上运行良好。 - Nummer_42O
tkinter窗口是否可以永远不拥有焦点,但仍能够点击按钮并保持在顶部?就像屏幕键盘一样? - Delrius Euphoria

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接