码迷,mamicode.com
首页 > 其他好文 > 详细

pyqt5-002

时间:2020-05-07 13:40:44      阅读:53      评论:0      收藏:0      [点我收藏+]

标签:标签   状态   child   指定   direct   滑动条   checkbox   搜索   span   

   控件是构建应用程序的基本模块,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

标签:标签   状态   child   指定   direct   滑动条   checkbox   搜索   span   

原文地址:https://www.cnblogs.com/superSmall/p/12820162.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!