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

时间:2013-09-27 10:35:15

标签: qt pyqt objectname

我有一个词典列表:

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

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

通常,代码如下:

self.checkBoxEnabled.checkState()

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

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

2 个答案:

答案 0 :(得分:18)

您可以使用QObject::findChild方法。在pyqt中,它应该写成:

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

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

答案 1 :(得分:1)

要在用户界面中找到所有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()}')