2014-10-10 66 views
1

有人可以向我解釋以下兩個代碼示例之間的區別嗎?爲什麼頂級的不工作?它執行沒有錯誤,但窗口不保持打開狀態。PyQt窗口構造

from PyQt4 import QtGui 
import sys 

app = QtGui.QApplication(sys.argv) 
QtGui.QMainWindow().show() 
app.exec_() 

和:

from PyQt4 import QtGui 
import sys 

app = QtGui.QApplication(sys.argv) 
win = QtGui.QMainWindow() 
win.show() 
app.exec_() 

回答

2

QtGui.QMainWindow().show()要創建的QMainWindow一個對象,你是顯示它。但是你不會在你的記憶中保存這個QMainWindow的實例。所以最終python的垃圾收集刪除該實例,並且您的QMainWindow不再顯示。

在第二個代碼中:win = QtGui.QMainWindow()將對象實例QMainWindow保存到內存中的win。 Python不認爲它是垃圾,因爲它正在使用,因此你的窗口保持打開狀態