QObject中关于对象删除的方法
一、学习指导
QObject中关于对象删除的方法我们先讲一个deleteLater(),这里要注意的是这个方法执行的时候是会等其他代码全部执行结束才会生效,哪怕是她下面的代码也会先执行。这节课要结合视频认真理解,其中关于信号和槽以及标签控件大家先做个简单的理解,我们到后面的章节会详细讲。
二、代码演示
def func(self): obj1 = QObject() self.obj1 = obj1 obj2 = QObject() obj3 = QObject() obj2.setParent(obj1) obj3.setParent(obj2) print(obj1) print(obj2) print(obj3) obj1.destroyed.connect(lambda :print('obj1被释放')) obj2.destroyed.connect(lambda :print('obj2被释放')) obj3.destroyed.connect(lambda :print('obj3被释放')) # del obj2 print(obj2.deleteLater()) print(obj1.children()) # 案例 label1 = QLabel(self) label1.setText('label1') label1.move(50,50) label1.setStyleSheet('background-color:green') label2 = QLabel(self) label2.setText('label2') label2.move(100,100) label2.setStyleSheet('background-color:green') label3 = QLabel(self) label3.setText('label3') label3.move(150,150) label3.setStyleSheet('background-color:green') # label2.deleteLater() del label2