在我的 (Py)Qt4 应用程序中,主窗口不会出现,直到用户使用命令选项卡从应用程序切换,然后命令选项卡返回到它。
奇怪的是,这个问题只有在 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
用来生成我的应用程序包。
编辑:这个邮件列表项解释了问题,给出了一个最小的测试用例。SPOILER:事实证明argv_emulation
选项是问题所在。它不应该与 GUI 应用程序一起使用。