2013-04-08 112 views
1

经过多年使用python,这是第一次发生这样的情况,即在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

为什么在提示中使用'sys.argv'? – iMom0 2013-04-08 09:36:08

+0

这只是从脚本复制并粘贴到提示符,但无论如何sys.argv不会导致问题,因为提示符工作,它是脚本不 – giuspen 2013-04-08 09:53:21

回答

6

documentation

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

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