Python代码在提示符下工作,而不是在脚本中工作

giu*_*pen 1 python command-line pyqt

使用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)
Run Code Online (Sandbox Code Playgroud)

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

任何人都可以帮助我理解这两种不同行为的原因是什么?

gat*_*tto 6

文档:

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

至于你的脚本,你必须调用app.exec_()来启动Qt事件循环(并显示启动).在C++ Qt程序中也是如此,如果没有事件循环,您将无法获得任何GUI.