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



我有一个字典列表:

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

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

通常,代码如下所示:

self.checkBoxEnabled.checkState()

但复选框启用是一个对象。 而且我只有一个字符串名称"复选框启用",无法使用它...

如何在 Pyqt 中按名称查找对象?类似的东西?自我。GetObjectByName('checkBoxEnabled').checkState()

您可以使用

QObject::findChild方法。在 pyqt 中,它应该这样写:

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

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

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

相关内容

  • 没有找到相关文章

最新更新