2014-10-10 63 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不认为它是垃圾,因为它正在使用,因此你的窗口保持打开状态