显示后,是否立即关闭PyQt QWidget窗口? [英] PyQt QWidget window closes immediately upon showing?

查看:47
本文介绍了显示后,是否立即关闭PyQt QWidget窗口?的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我意识到这个问题以前已经被问过几次了,尽管它们似乎都不适用于我的情况。我已经安装了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进程。

这篇关于显示后,是否立即关闭PyQt QWidget窗口?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆