pyqt5-002
Posted supersmall
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了pyqt5-002相关的知识,希望对你有一定的参考价值。
控件是构建应用程序的基本模块,PyQt5提供各种各样的控件,包括按钮、复选框、滑动条、列表框等。
控件分类:
按钮
输入控件
展示控件
容器控件
结构控件
滚动控件
辅助控件
其他
QCheckBox:
QCheckBox复选框控件,它有两个状态:打开和关闭,他是一个带有文本标签(Label)的控件。复选框常用于表示程序中可以启用或禁用的功能。
http://code.py40.com/pyqt5/26.html
相同的共性:
- 名字
- 矩形区域
- 位置
- 大小
- 可以设置样式
继承关系:
控件们=====>QWidget=====>QObject
from PyQt5.Qt import * import sys class Window(QWidget): def __init__(self): super().__init__() self.resize(500, 500) self.setWindowTitle(‘QObject的学习‘) self.setup_ui() def setup_ui(self): # self.QObject_test() # self.QObject_name_practice() self.QObject_copy_children() pass def QObject_test(self): # 继承结构测试 QObject.__subclasses__() # 获取所有子类 mros = QObject.mro() for mro in mros: print(mro) # 打印继承的父类 # 对当前类和基类进行搜索以确定方法所在的位置。而搜索的顺序就是所谓的「方法解析顺序」(Method Resolution Order,或MRO)。对于只支持单继承的语言来说,MRO 一般比较简单;而对于 Python 这种支持多继承的语言来说,MRO 就复杂很多。 def QObject_name_practice(self): # 对象名称和属性的操作 # *************测试API************** # obj = QObject() # obj.setObjectName(‘notice‘) # print(obj.objectName()) # # obj.setProperty(‘NOTICE_LEVEL1‘, "error") # obj.setProperty(‘NOTICE_LEVEL2‘, "waring") # # print(obj.property(‘NOTICE_LEVEL1‘)) # # 获取属性值 # # print(obj.dynamicPropertyNames()) # 获取一个对象中所有通过setProperty()设置的属性名称 # *****************结束*************** # ****************案列演示***************** with open(‘QObject.qss‘, ‘r‘) as f: qApp.setStyleSheet(f.read()) label1 = QLabel(self) label1.setObjectName(‘notice‘) label1.setProperty(‘notice_level‘,‘normal‘) label1.setText(‘label1‘) label2 = QLabel(self) label2.move(100, 100) label2.setObjectName(‘notice‘) label2.setProperty(‘notice_level‘,‘error‘) label2.setText(‘label2‘) btn = QPushButton(self) btn.setText(‘btn‘) btn.move(50, 50) # label.setStyleSheet(‘font-size:20px; color:green;‘) # ****************演示结束***************** pass def QObject_copy_children(self): # 对象的复制关系操作 # ***********测试API开始************** obj1 = QObject() obj2 = QObject() obj3 = QObject() print(‘obj1==>‘, obj1) print(‘obj2==>‘, obj2) print(‘obj3==>‘, obj3) obj1.setParent(obj2) obj3.setParent(obj2) obj3.setObjectName(‘3‘) # label1 = QLabel() # label1.setParent(obj2) # 多个父对象设置,最后面的会覆盖前面,以最后的为准 # print(obj1.parent()) # print(obj2.children()) # 获得他的子对象 # print(obj2.findChild(QObject,‘3‘,Qt.FindDirectChildrenOnly)) # print(obj2.findChile(QLabel)) # 必须是同类类型 # 有三个参数,获取某一个指定名称和类型的子对象 # 参数1:对象类型:QObject ; 类型元组:(QPushButton,QLabel) # 参数2:对象名称:notice; 可以省略 # 参数2:查找选项(Qt.FindChildrenRecursively->递归查找,默认选项;Qt.FindDirectChildrenOnly->只查找直接子对象) # ***********测试API结束************** print(obj2.findChildren(QObject)) pass if __name__ == ‘__main__‘: app = QApplication(sys.argv) window = Window() window.show() sys.exit(app.exec_())
以上是关于pyqt5-002的主要内容,如果未能解决你的问题,请参考以下文章