Python中的GUI窗口(PyQT)闪烁并立即关闭?

3
我是新手PyQT,刚开始通过这个视频学习:https://www.youtube.com/watch?v=JBME1ZyHiP8 当我在我的Ubuntu 14.04上运行代码时
import sys
from PyQt4 import QtGui # Always have these two imports

app = QtGui.QApplication(sys.argv)
window = QtGui.QWidget()
window.setGeometry(50,50,500,300)
window.setWindowTitle("PyQt start")

window.show()

创建的窗口一闪而过就关闭了。我该如何让窗口停留,以便我可以与它进行交互?上面YouTube视频中的代码是在Windows平台上演示的。我是否需要在我的代码中添加任何Ubuntu特定的内容?


为什么要负评?这是非常具体和明确的编程问题! - smilingbuddha
你是否收到错误信息? - furas
这段代码在我使用的Linux Mint 17(基于Ubuntu 14)上工作良好。 - furas
@furas,我没有收到错误信息。 - smilingbuddha
@furas 程序没有任何提示就退出了。 - smilingbuddha
显示剩余2条评论
1个回答

2
您没有运行该应用程序,请在末尾添加以下行:

sys.exit(app.exec_())

相关文档中得知:

int QApplication.exec_ ()

进入主事件循环并等待直到调用exit(),然后返回设置为exit()的值(如果通过quit()调用exit()则该值为0)。

必须调用此函数以开始事件处理。主事件循环从窗口系统接收事件并将其分派给应用程序小部件。

通常,在调用exec()之前不能发生任何用户交互。作为一种特殊情况,模态小部件(如QMessageBox)可以在调用exec()之前使用,因为模态小部件调用exec()来启动本地事件循环。


太好了,成功了!谢谢你!为什么在 Windows 版本上不需要这个? - smilingbuddha
在Windows上也是必需的。 - 101
嗯...在我在YouTube视频中提供的链接里,并没有使用你提到的命令。我想知道为什么会这样。不管怎样,再次感谢你的帮助。 - smilingbuddha
2
如果您在非标准的Python终端(如IPython或Spyder等)中运行它,则app.exec_()可能已经被调用了。 - three_pineapples
2
@three_pineapples。PyQt和PySide使用输入钩子来模拟Python交互式会话中的事件处理,因此不必调用exec_()。请参见:在Python Shell中使用PyQt4 - ekhumoro

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接