在我的(Py)Qt4應用程序中,直到用戶使用命令選項卡切換離開應用程序然後命令選項卡切換回主窗口。Qt:MainWindow在應用程序被手動激活之前不會出現
奇怪的是,這個問題只有在Finder中雙擊我的.app文件時纔會顯示。如果我從命令行啓動應用程序,它可以正常工作。
另外,我嘗試添加以下行到我的代碼,但似乎沒有這樣的伎倆:
mainWindow.show()
mainWindow.raise_()
mainWindow.repaint()
QApplication.postEvent(QEvent.ApplicationDeactivate)
QApplication.postEvent(QEvent.ApplicationActivate)
QApplication.instance().processEvents()
我想,也許這在某種程度上線程相關的問題,但我可以插入這條線幾乎任何地方:
assert threading.current_thread().name == "MainThread"
最後一個問題:我不知道它是否有關,但我閃屏不能正確隱藏自身(儘管調用splashscreen.finish(mainWindow)
)。 (如果我完全註釋掉啓動畫面,主窗口仍然如上所述出現異常。)
爲什麼我的應用程序包的行爲與從命令行啓動不同?任何想法如何我可以診斷這個?我使用py2app
來生成我的應用程序包。
編輯:這個郵件列表項目explains的問題,給出了一個最小的測試用例。 SPOILER:事實證明argv_emulation
選項是問題所在。它不應該與GUI應用程序一起使用。
感謝您的回覆。我已經調用show()和raise_()(按照該順序 - 只是更新了我的帖子以反映這一點,謝謝)。我已經看到了你剛剛鏈接到的SO答案,我不認爲我有完全相同的問題。這裏的關鍵是我的應用程序在從命令行啓動時的行爲*正確*,但從應用程序包啓動時行爲不當。我完全不解。 –