gpt4 book ai didi

python - 派塞德 : Children objects not destroyed on close of parent object

转载 作者:行者123 更新时间:2023-11-28 21:56:57 26 4
gpt4 key购买 nike

我有以下代码:

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 的所有子项,但似乎并非如此,因为 print 函数在 .. .

出了什么问题?

最佳答案

在 Qt 中,QObject 不会被立即删除(参见 QObject::deleteLater() 方法)。在 Python 中,对象由垃圾收集器删除。

因此,您的小部件可能会在删除前的几圈内保留在内存中。

关于python - 派塞德 : Children objects not destroyed on close of parent object,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20705820/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com