使用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)
如果我在python提示符(版本2.7.3)中逐行输入行splash.show()我可以看到屏幕上显示的图像,如果我改为在脚本中运行它 当我看到飞溅后的打印正确地显示在终端上时,不显示图像。
任何人都可以帮助我理解这两种不同行为的原因是什么?
答案 0 :(得分:6)
PyQt4安装一个输入钩子(使用PyOS_InputHook),当交互式解释器等待用户输入时,该钩子处理事件。这意味着您可以,例如,从Python shell提示符创建窗口小部件,与它们交互,并且仍然能够输入其他Python命令。
至于你的脚本,你必须调用app.exec_()来启动Qt事件循环(并显示启动)。在C ++ Qt程序中也是如此,如果没有事件循环,你将无法获得任何GUI。