12

我有一个字典列表:

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

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

通常,代码如下:

self.checkBoxEnabled.checkState()

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

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

4

2 回答 2

23

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

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

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

于 2013-09-28T00:50:17.493 回答
1

要在 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()}')

于 2020-04-11T08:05:32.600 回答