鉴于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')]
运行结论

相关文章: