2013-04-08 55 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。

相關問題