如何在pyqt中按名称查找对象?

Posted

技术标签:

【中文标题】如何在pyqt中按名称查找对象?【英文标题】:How to find an object by name in pyqt? 【发布时间】:2013-09-27 10:35:15 【问题描述】:

我有一个字典列表:

globalParams = ['attr':'enabled','ctrl':'checkBoxEnabled','type':'checkBox',
                'attr':'colorMode','ctrl':'comboBoxColorMode','type':'comboBox']

'ctrl' - Qt 窗口中控件的名称。

一般情况下,代码如下:

self.checkBoxEnabled.checkState()

但 checkBoxEnabled 是一个对象。而且我只有一个字符串名称'checkBoxEnabled'并且不能使用它......

如何在 pyqt 中按名称查找对象?就像是? self.GetObjectByName('checkBoxEnabled').checkState()

【问题讨论】:

【参考方案1】:

您可以使用QObject::findChild 方法。在pyqt中应该这样写:

checkbox = self.findChild(QtGui.QCheckBox, "checkBoxEnabled")

self 应该是复选框的父窗口小部件。

【讨论】:

【参考方案2】:

要在您的 UI 中查找所有 QCheckBox 项,您可以循环遍历小部件的所有子项,如下所示:

from PyQt5.QtWidgets import QCheckBox
from PyQt5.QtCore import QObject

class Mainwindow(QMainWindow):
    def __init__(self):
        # super().__init__()
        self.checkbox = QCheckBox(self)
        self.checkbox_1 = QCheckBox(self)

        for checkstate in self.findChildren(QCheckBox):
            print(f'get check state:checkstate.checkState()')

【讨论】:

以上是关于如何在pyqt中按名称查找对象?的主要内容,如果未能解决你的问题,请参考以下文章

如何检查从服务器收到的响应是 html 还是 json 并在 extjs 中按名称查找 html 表单?

如何在javascript中按属性查找数组中的对象?

如何在javascript中按属性查找数组中的对象?

在 Visual Studio Code 中按名称查找文件

如何通过在 PyQt5 中按 Enter 键从 QTableView 获取数据

在 PyQt5 中按下时如何切换按钮文本