显示后,是否立即关闭PyQt QWidget窗口?

2022-03-30 00:00:00 python user-interface pyqt qt4

问题描述

我意识到这个问题以前已经被问过几次了,尽管它们似乎都不适用于我的情况。我已经安装了PyQt,现在只是尝试打开一个窗口:

import sys
from PyQt4 import QtGui as qt

segmentation = qt.QApplication(sys.argv)
main = qt.QWidget()
main.show()
我在这里看到的所有其他问题通常都是由于窗口的show方法从函数内部调用或类似的原因而导致窗口超出范围而导致的错误。

我的代码根本不使用任何函数,因此这不可能是问题所在。这应该是可行的,不是吗?我正在学习本教程:

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

在8:58,讲师的内容与我所写的内容几乎一模一样,他们的窗口显示出来,并保持在正常状态。我的屏幕只显示了不到一秒钟,然后就关闭了。

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


解决方案

在没有看到所有代码的情况下,我认为您缺少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()创建小部件,然后显示。

执行python脚本时,它会完全按照您的指示执行操作:

  1. 创建应用程序
  2. 创建小工具
  3. 显示小工具
  4. 已完成。剧本的结尾。

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

相关文章