簡體   English   中英

當tkinter窗口獲得焦點時如何處理

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM