首页 > 软件开发 > PYTHON >

PyQt5-如何对QObject对象的父子关系进行操作

来源:互联网 2023-03-16 19:16:59 407

QObject对象有关父子关系的函数,以及应用的操作。otn办公区 - 实用经验教程分享!

1.设置父对象

  • 设置父对象:obj.setParent(p)otn办公区 - 实用经验教程分享!

    参数p,是obj要设置的父对象。otn办公区 - 实用经验教程分享!

    类似与在实际写控件时,将父控件当子控件的参数,形成父子关系。otn办公区 - 实用经验教程分享!

    PyQt5-如何对QObject对象的父子关系进行操作otn办公区 - 实用经验教程分享!

  • 该信息未经授权抓取自百度经验

2.获取父对象

  • 获取父对象:obj.parent()otn办公区 - 实用经验教程分享!

    父对象只能由一个,如果多次设置父对象,那么最后会覆盖掉前面的。otn办公区 - 实用经验教程分享!

    PyQt5-如何对QObject对象的父子关系进行操作otn办公区 - 实用经验教程分享!

3.获取下层子对象

  • 获取子对象:obj.children()

    otn办公区 - 实用经验教程分享!

    返回一个列表。获取所有下一层子对象。otn办公区 - 实用经验教程分享!

    例如:查找父窗口对象(self)下的所有对象:otn办公区 - 实用经验教程分享!

    self.children()otn办公区 - 实用经验教程分享!

    PyQt5-如何对QObject对象的父子关系进行操作otn办公区 - 实用经验教程分享!

4.查找单个子对象

  • 1

    找子对象:obj.findChild(类型(或类型元组),ID(设置的对象名), 查找选项):otn办公区 - 实用经验教程分享!

    1)第二个和第三个是可选参数:ID(设置的对象名), 查找选项。

    otn办公区 - 实用经验教程分享!

    otn办公区 - 实用经验教程分享!

    2)第一参数是子对象的类型,限定查找的对象的类型,可以是一个,如果是多个,应以元组类型传参。otn办公区 - 实用经验教程分享!

    ①如果第一个参数仅一个类型:obj.findChild(类型):otn办公区 - 实用经验教程分享!

    返回符合参数类型的第一个子对象。otn办公区 - 实用经验教程分享!

    例如:查找父窗口对象(self)下的子对象:

    otn办公区 - 实用经验教程分享!

    otn办公区 - 实用经验教程分享!

    self.findChild(QLabel)otn办公区 - 实用经验教程分享!

    PyQt5-如何对QObject对象的父子关系进行操作otn办公区 - 实用经验教程分享!

  • 2

    ②如果第一个参数是类型元组:obj.findChild((类型元组)):otn办公区 - 实用经验教程分享!

    返回的仍然是第一个找到的子对象。otn办公区 - 实用经验教程分享!

    例如:查找父窗口对象(self)下的子对象:otn办公区 - 实用经验教程分享!

    self.findChild((QPushButton,QLabel)otn办公区 - 实用经验教程分享!

    PyQt5-如何对QObject对象的父子关系进行操作otn办公区 - 实用经验教程分享!

  • 3

    obj.findChild如果有第二个可选参数:obj.findChild(type,name)otn办公区 - 实用经验教程分享!

    必须是提供了有setObjectName()函数提供的名字。otn办公区 - 实用经验教程分享!

    例如:查找父窗口对象(self)下的某个子对象:otn办公区 - 实用经验教程分享!

    self.findChild(QPushButton,'btn-d')otn办公区 - 实用经验教程分享!

    PyQt5-如何对QObject对象的父子关系进行操作otn办公区 - 实用经验教程分享!

  • 4

    obj.findChild如果有第三个可选参数:obj.findChild(type,name,查找选项)otn办公区 - 实用经验教程分享!

    第三个参数有两个选项:otn办公区 - 实用经验教程分享!

    ①QQt.FindChildrenRecursively,(默认选项,可遍历所有子层查找)otn办公区 - 实用经验教程分享!

    ②Qt.FindDirectChildrenOnly,(仅在它的下层查找。)otn办公区 - 实用经验教程分享!

    例如:查找父窗口内的某个控件对象:otn办公区 - 实用经验教程分享!

    递归查找:self.findChild(QLabel,'lab-b',Qt.FindChildrenRecursively)

    otn办公区 - 实用经验教程分享!

    直接查找:self.findChild(QLabel,'lab-b',Qt.FindDirectChildrenOnly))otn办公区 - 实用经验教程分享!

    PyQt5-如何对QObject对象的父子关系进行操作otn办公区 - 实用经验教程分享!

  • 5.查找多个子对象:

  • 1

    找子对象:obj.findChildren(类型(或类型元组),ID(设置的对象名), 查找选项):otn办公区 - 实用经验教程分享!

    1)第二个和第三个是可选参数:ID(设置的对象名), 查找选项。

    otn办公区 - 实用经验教程分享!

    otn办公区 - 实用经验教程分享!

    2)第一参数是子对象的类型,限定查找的对象的类型,可以是一个,如果是多个,应以元组类型传参。otn办公区 - 实用经验教程分享!

    3)返回所有最底层的对象一个列表。otn办公区 - 实用经验教程分享!

    例如:查找父窗口对象(self)下的所有子对象:

    otn办公区 - 实用经验教程分享!

    otn办公区 - 实用经验教程分享!

    self.findChild((QLabel,QPushButton))otn办公区 - 实用经验教程分享!

    PyQt5-如何对QObject对象的父子关系进行操作otn办公区 - 实用经验教程分享!

  • 2

    如果按第二个参数查找,必须是提供了有setObjectName()函数提供的名字。otn办公区 - 实用经验教程分享!

    PyQt5-如何对QObject对象的父子关系进行操作otn办公区 - 实用经验教程分享!

  • 以上方法由办公区教程网编辑摘抄自百度经验可供大家参考!otn办公区 - 实用经验教程分享!


    标签: python

    办公区 Copyright © 2016-2023 www.bgqu.net. Some Rights Reserved. 备案号:湘ICP备2020019561号统计代码