PyQt QWidget window 显示后立即关闭?

PyQt QWidget window closes immediately upon showing?

我意识到这个问题之前已经问过好几次了,尽管其中 none 似乎适用于我的情况。我已经安装了 PyQt,我只是想打开一个 window 这样的:

import sys
from PyQt4 import QtGui as qt

segmentation = qt.QApplication(sys.argv)
main = qt.QWidget()
main.show()

我在这里看到的所有其他问题通常是由 window 超出范围的错误引起的,因为 window 的 show 方法被调用来自函数或类似的东西。

我的代码根本没有使用函数,所以这不是问题所在。这应该可以正常工作,不是吗?我正在学习本教程:

https://www.youtube.com/watch?v=JBME1ZyHiP8

在时间 8:58,讲师几乎完全掌握了我所写的内容,他们的 window 出现并保持良好状态。我的显示几分之一秒然后关闭。

视频中代码块的屏幕截图,用于与此处提供的代码块进行比较:

没有看到您的所有代码,我假设您遗漏了 sys.exit() 位。

对于您的特定代码,sys.exit(segmentation.exec_()) 将是您所需要的。

segmentation = qt.QApplication(sys.argv)
main = qt.QWidget()
main.show()
sys.exit(segmentation.exec_())

关于这里发生的事情的一些细节。

segmentation = qt.QApplication(sys.argv) 创建实际的应用程序。

main = qt.QWidget()main.show() 创建 Widget,然后显示。

当执行 python 脚本时,这完全按照您的指示执行:

  1. 创建应用程序
  2. 创建小部件
  3. 显示小部件
  4. 完成。脚本结束。

sys.exit() 所做的是干净地关闭 python 脚本。 segmentation.exec_()启动QT的事件驱动后台处理。一旦 segementation.exec_() 完成(用户关闭应用程序,您的软件关闭应用程序,或者遇到错误)它会 return 一个值,然后传递给 sys.exit() 函数依次终止 python 进程。