我有以下代码:
import sys
from PySide import QtGui
from PySide import QtCore
class Main_Window(QtGui.QMainWindow):
def __init__(self):
super(Main_Window,self).__init__()
self.initUI()
def initUI(self):
self.navigateur=QtGui.QMdiArea()
self.setCentralWidget(self.navigateur)
self.setGeometry(50, 50, 600, 600)
self.window =QtGui.QWidget(None,QtCore.Qt.WA_DeleteOnClose)
self.window.grid=QtGui.QGridLayout()
self.window.button=QtGui.QPushButton("quit",parent=self.window)
self.window.button.setObjectName("test")
self.window.button.clicked.connect(self.try_close)
self.window.grid.addWidget(self.window.button)
self.window.setLayout(self.window.grid)
self.window.setFixedSize(self.window.sizeHint())
self.fwindow=self.navigateur.addSubWindow(self.window,QtCore.Qt.WA_DeleteOnClose)
self.show()
def try_close(self):
self.fwindow.close()
print(self.window.findChild(QtGui.QPushButton,"test"))
def main():
app=QtGui.QApplication(sys.argv)
main_wdw=Main_Window()
sys.exit(app.exec_())
if __name__=="__main__":
main()
根据文档,当我关闭 self.window 时,self.window 的所有子级都应被删除,但情况似乎并非如此,因为打印函数在 .. 处打印类似 PySide.QtGui.QPushButton 对象的内容。 .
出了什么问题?
最佳答案
在 Qt 中,QObject
不会立即删除(请参阅 QObject::deleteLater() 方法)。在Python中,对象被垃圾收集器删除。
因此,您的小部件可能会在删除之前保留在内存中一圈。
关于python - pyside : Children objects not destroyed on close of parent object,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20705820/