1

在使用 python 几年之后,这是第一次在 python 提示符下逐行尝试一些代码,与在脚本文件中运行它的结果不同。

代码很简单:

import os, sys
from PyQt4 import QtGui, QtCore, uic

app = QtGui.QApplication(sys.argv)
splash=QtGui.QSplashScreen(QtGui.QPixmap("/home/pippo/splashscreen.jpg"))
splash.show()
print "hello!"

time.sleep(10)

如果我在splash.show()行之后的python提示符(版本2.7.3)中逐行输入行,我可以看到屏幕上显示的图像,如果我改为在脚本中运行它,则图像不会显示,而我可以看到飞溅后的打印正确地在终端上。

谁能帮我理解这两种不同行为的原因是什么?

4

1 回答 1

6

文档中:

PyQt4 安装了一个输入钩子(使用 PyOS_InputHook),它在交互式解释器等待用户输入时处理事件。这意味着您可以,例如,从 Python shell 提示符创建小部件,与它们交互,并且仍然能够输入其他 Python 命令。

至于您的脚本,您必须调用 app.exec_() 才能启动 Qt 事件循环(并显示启动画面)。在 C++ Qt 程序中也会发生同样的情况,如果没有事件循环,您将无法获得任何 GUI。

于 2013-04-08T09:52:30.717 回答