pyqt5-002

Posted supersmall

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了pyqt5-002相关的知识,希望对你有一定的参考价值。

   控件是构建应用程序的基本模块,PyQt5提供各种各样的控件,包括按钮、复选框、滑动条、列表框等。

  控件分类:

    按钮

        输入控件

        展示控件

        容器控件

        结构控件

       滚动控件

      辅助控件

       其他   

  QCheckBox:

    QCheckBox复选框控件,它有两个状态:打开和关闭,他是一个带有文本标签(Label)的控件。复选框常用于表示程序中可以启用或禁用的功能。

    http://code.py40.com/pyqt5/26.html

 

 

 

  相同的共性:

  1. 名字
  2. 矩形区域
  3. 位置
  4. 大小
  5. 可以设置样式      

  继承关系:

  控件们=====>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的主要内容,如果未能解决你的问题,请参考以下文章

微信小程序代码片段

VSCode自定义代码片段——CSS选择器

谷歌浏览器调试jsp 引入代码片段,如何调试代码片段中的js

片段和活动之间的核心区别是啥?哪些代码可以写成片段?

VSCode自定义代码片段——.vue文件的模板

VSCode自定义代码片段6——CSS选择器