如何通过名称获取Qt UI窗口中的对象列表?

时间:2019-07-12 18:24:45

标签: python python-3.x pyqt pyqt5

我的目标是将所有QLineEdits和QSpinBox的值分配给字典对象,例如:

editable_objects = {
"lineEdit_1" : "Value_1",
"QSpinBox_1" : "1234"
}

是否有获取这些对象列表的函数?

此操作的目的是创建一个JSON数据文件以加载,保存设置以及记录报告的所有设置数据。

1 个答案:

答案 0 :(得分:0)

答案是使用findChildren()方法。

假设您的GUI位于GUI的典型类对象中

您可以调用self.findChildren(QObject),在这种情况下,QObject将是您要查找的对象的类型。

如果要查找QSpinBox对象,则将调用self.findChildren(QSpinBox)。这将返回一个生成器对象,然后将其循环。

下一步-有了对象后,我们如何获得对象名称?

children = self.findChildren(QSpinBox)
for child in children:
    print(child.objectName())

我们现在正在使用方法objectName()访问每个对象“子对象”,该方法将返回在QtDesigner中设置的名称,例如spinBox_1,spinBox_2等。

然后可以扩展它以获取我们的值,例如child.value()。

另请参阅:https://doc.qt.io/qt-5/qobject.html#findChildren