gpt4 book ai didi

Qt:在手动激活应用程序之前不会出现 MainWindow

转载 作者:行者123 更新时间:2023-12-04 04:57:36 26 4
gpt4 key购买 nike

在我的 (Py)Qt4 应用程序中,直到用户使用 command-tab 切换离开应用程序,然后使用 command-tabs 切换回它,主窗 Eloquent 会出现。

奇怪的是这个问题仅在双击启动时显示 我在 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问题,给出了一个最小的测试用例。剧透:原来是 argv_emulation选项是问题。它不应该与 GUI 应用程序一起使用。

最佳答案

您应该能够通过在主窗口上调用 show() 后跟 raise_(​​) 来解决此问题。

IIRC,您需要两者,并且您可能按该顺序需要它们。这适用于 ubuntuone 控制面板应用程序,它是 PyQt 并使用 py2app 打包。

关于这个重复问题的答案有更多背景信息:Why does my PyQt application open in the background on Mac OS X?

关于Qt:在手动激活应用程序之前不会出现 MainWindow,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16574315/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com