2013-06-30 49 views
1

我想用一個主窗口和一個後臺線程來構建一個應用程序,該線程檢查循環中的某個條件,並且當條件滿足時,將主窗口前方。 要使窗口前面我使用lift()方法,但它不起作用。 所以,我沒有從Python命令行下面的實驗:python的Tkinter包的lift()方法不起作用

from Tkinter import * 
root = Tk() 

出現一個TK窗口。最小化窗口,然後:

root.lift() 

沒有任何反應。我也嘗試在提升之前啓動窗口的主循環:

import thread 
# start mainloop in separate thread so we can continue typing 
thread.start_new_thread(root.mainloop,()) 
root.lift() 

再次,沒有任何反應。在我的實際代碼中,情況更糟糕 - 一旦我呼叫lift(),窗口就會卡住並停止響應。

我在做什麼錯?

(我使用Python 2.7.2在Windows 7中)

回答

1

您不能運行在從您創建小部件一個不同的線程的主循環。事實上,你不能從另一個線程與小部件進行交互。

要恢復最小化窗口的效果,您需要使用deiconify方法。

+0

好的。我在上面的實驗中嘗試了deiconify,它工作。謝謝。現在我該如何使用線程來更新窗口?是否有一些窗口消息機制? – roel

+1

您需要使用隊列。在stackoverflow上有幾個例子。例如,http://stackoverflow.com/a/1198288/7432 –

+0

感謝您的提示。我使用鏈接示例中的'after'方法解決了我的問題。 – roel