鉴于PyQt控件的继承关系,我们先学习PyQt控件的基类——QObject。
一.所有的QT对象的基类
我们先看一下PyQt里空间的继承关系,稍微改一下代码,显示出继承关系
from PyQt5.Qt import * import sys app = QApplication(sys.argv) class Window(QWidget): def test(self): mros = QObject.mro() for mro in mros: print(mro) window = Window() window.test() sys.exit(app.exec_())
<class 'PyQt5.QtCore.QObject'> <class 'sip.wrapper'> <class 'sip.simplewrapper'> <class 'object'>
这就表明了QWidget这个控件的继承呢个关系,可以看出来所有的类,都是基于Python的object这个类的
二.QObject的功能作用
由于所有的控件都是继承了QObject,所以他所有的API是各种控件都具备的,下面列举的就是他的功能作用
1.对戏那个名称、属性的操作(API):
window = QWidget() window.setObjectName() #给对象设定一个名称(一般这个名称在整个项目里是唯一的) window.objectName() #获取这个对象的名称 window.setProperty() #给对象设置一个属性 window.property() #获取对象的某个属性 window.dynamicPropertyNames() #获取一个对象中通过setProperty设置的属性名名称
这里前几个很好理解,设置属性的我们来看一下怎么用
window = QWidget() label = QLabel(window) label.setProperty('stat','on') label.setProperty('color','green') print(label.property('stat')) print(label.dynamicPropertyNames())
on [PyQt5.QtCore.QByteArray(b'stat'), PyQt5.QtCore.QByteArray(b'color')]