pyqt5-004
QObject的类型判定:
API:
isWidgetType() :判断是否为控件
inherits(父类):判断是否继承自某个父类(可以使直接继承或间接继承自某个类)
应用场景:
过滤筛选控件
obj = QObject() w = QWidget() btn = QPushButton() label = QLabel() objs = [obj, w, btn, label] ob = [o.isWidgetType() for o in objs ] # 判断是否为控件类型 print(ob) op = [o.inherits('QWidget') for o in objs] # 判断是否继承自父类 print(op)
对象删除:
API:
obj.deleteLabter():
1.删除一个对象时,也会接触它与父对象之间的关系
2.deleteLater()并没有将对象立即销毁,而是想主消息循环发送一个event,下一次主消息循环收到这个event之后才会销毁对象
3.这样做的好处是可以在这些延迟删除的时间内完成一些操作,UI出就是内存释放会不及时
应用场景:
想要移除某一个对象的时候使用
# 对象删除 obj1 = QObject() self.obj1 = obj1 obj2 = QObject() obj3 = QObject() obj3.setParent(obj2) obj2.setParent(obj1) obj1.destroyed.connect(lambda: print('obj1 releases')) obj2.destroyed.connect(lambda: print('obj2 releases')) obj3.destroyed.connect(lambda: print('obj3 releases')) # del obj2 obj2.deleteLater() print(obj1.children()) # 之后才会删除obj2对象
King@_@