2012-01-31 135 views
1

我有一個簡單的Python腳本,在運行時加載GUI(使用Tkinter創建)。我使用py2app將Python腳本轉換爲OSX的雙擊應用程序。當應用程序被點擊時,Python執行腳本。但是,Python(和GUI)的負載最小化。用戶必須單擊托盤中的Python圖標才能將GUI帶入前臺。Python Tkinter GUI總是加載最小化

我已經嘗試將lift()添加到主Tkiner窗口,但它似乎沒有任何效果(我試過類似的方法,但沒有成功將窗口帶到前臺)。雙擊應用程序後,用戶很難說出如果GUI不彈出(特別是如果他們期望出現某種類型的界面),會發生什麼情況。我正在運行Lion,並且在Leapord上沒有這個問題。

任何幫助將不勝感激。

謝謝。

+0

是所以現在我只是在由py2applet建造的setup.py選項字典改變argv_emulation爲False禁用功能,我不需要argv_emulation你不小心在窗口上調用了'.iconify()'或'.withdraw()'?無論哪種方式,嘗試調用'.deiconify()',這應該強制顯示。 – 2012-01-31 22:24:28

回答

3

我已經能夠通過添加以下root.mainloop()之前獲得Tkinter的發揮好於獅子:

root.attributes('-topmost', 1) 
root.update() 
root.attributes('-topmost', 0) 
1

好吧,我發現,工作的解決方案。從外殼啓動是不同的,那麼推出編譯應用程序,這種解決方案修復獅子下的背景窗口問題我編的Python/Tkinter的應用

root.iconify() 
    root.deiconify() 

窗口還是默認在後臺出現,但隨後後彈出圖標化和deiconify被稱爲回root.mainloop前右後方()調用

4

我只是面臨着同樣的問題,並發現一般的原因。所有已發佈的解決方法的問題是,他們要麼不爲py2app建造可執行的工作(以下簡稱「-topmost」處理方法沒有)或者有嚴重的副作用(該圖標化/ deiconify作品,但會導致未來的所有模式窗口從該應用程序停止被取消,包括tkMessageBox和tkFileDialog)。

問題是由py2app的argv_emulation,這是默認啓用造成的。這種選擇使一些OSX專用炭事件代碼的應用程序的啓動加載器,可在DIST /應用程序的名字/目錄中找到/資源/ __你的內置應用程序包的啓動__.py。

OPTIONS = {「argv_emulation」:假}