簡體   English   中英

Python Tkinter GUI始終最小化加載

[英]Python Tkinter GUI Always loads minimized

我有一個簡單的Python腳本,該腳本在運行時會加載GUI(使用Tkinter創建)。 我使用py2app將Python腳本轉換為OSX的雙擊應用程序。 單擊該應用程序后,Python將執行腳本。 但是,Python(和GUI)的負載已降至最低。 用戶必須單擊托盤中的Python圖標才能將GUI置於前台。

我曾嘗試將lift()添加到Tkiner主窗口中,但似乎沒有任何效果(我嘗試過類似的方法,但未成功將該窗口置於前景中)。 雙擊應用程序后,如果GUI不彈出,用戶很難說出是怎么回事(特別是如果他們希望某種界面出現的話)。 我正在運行Lion,並且在Leapord上沒有此問題。

任何幫助將不勝感激。

謝謝。

我只是面臨同樣的問題,並找到了普遍原因。 所有已發布的變通辦法的問題是它們要么不適用於py2app生成的可執行文件(“最頂”的變通辦法不起作用),要么具有嚴重的副作用(圖標化/去圖標化工作,但會導致以后所有模態窗口從該應用程序將不再被禁止使用,包括tkMessageBox和tkFileDialog)。

該問題是由py2app的argv_emulation引起的,該默認情況下已啟用。 該選項將一些特定於OSX的Carbon事件代碼放入應用程序的引導加載程序中,該代碼可在構建的應用程序捆綁包的dist / appname / Contents / Resources / __ boot __.py中找到。 我不需要argv_emulation,所以現在我只是通過將py2applet構建的setup.py的OPTIONS詞典中的argv_emulation更改為False來禁用該功能:

選項= {'argv_emulation':False}

通過在root.mainloop()之前添加以下內容,我已經能夠使tkinter在Lion上發揮出色的作用:

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

好的,我已經找到了有效的解決方案。 從外殼啟動不同於啟動已編譯的應用程序,此解決方案為我的已編譯Python / Tkinter應用程序修復了Lion下的后台窗口問題

    root.iconify()
    root.deiconify()

默認情況下,該窗口仍顯示在后台,但在調用root.mainloop()之前緊接調用iconify和deiconify之后,該窗口會彈出

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

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