【问题标题】:How to obtain a list of objects in a Qt UI window by name? [duplicate]如何按名称获取 Qt UI 窗口中的对象列表? [复制]
【发布时间】:2019-07-12 18:24:45
【问题描述】:

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

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

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

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

【问题讨论】:

  • 更好地解释自己,因为不清楚你想要什么

标签: python python-3.x pyqt pyqt5


【解决方案1】:

答案是使用 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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2012-02-16
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-09-08
    相关资源
    最近更新 更多