2010-10-01 98 views
9

我有一個腳本,使用Tkinter彈出一個消息窗口。我如何確保它需要關注,以便用戶不會錯過它,並明確地必須關閉窗口。代碼是:使Tkinter小部件成爲焦點

root = Tk() 
to_read = "Stuff" 
w = Label(root, text=to_read) 
w.pack() 
root.mainloop() 

回答

14

您可以使用focus_force方法。請參閱以下內容:

但需要注意的文檔:

w.focus_force()

強制輸入焦點的部件。這是不禮貌的。最好等待窗口經理給你關注。另請參閱下面的.grab_set_global()。

更新:它應該在root上工作。例如,嘗試運行以下代碼。它會創建一個窗口,您可以切換焦點。 5秒後,它會嘗試抓住焦點。

from Tkinter import * 

root = Tk() 
root.after(5000, lambda: root.focus_force()) 
root.mainloop() 
+0

的命令就可以了,但如果它在我的代碼去?看來我的格式將是root.focus_force,但它會給出一個Attribute錯誤。 – Ali 2010-10-01 20:11:39

+1

@Ali:我更新了問題以回答您的評論。 – ars 2010-10-01 20:19:15

+0

它現在似乎在工作。但是我忽略了.after函數。謝謝。 – Ali 2010-10-01 20:37:42

1

什麼工作對我來說是:

root.wm_attributes("-topmost", 1) 
root.focus_force() 

我發現這和一些其他的方式來做到這一點在Win32 here