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

问题描述 投票:10回答:2

我有一个字典列表:

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

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

通常,代码如下:

self.checkBoxEnabled.checkState()

但是checkBoxEnabled是一个对象。而且我只有一个字符串名称“ checkBoxEnabled”,无法使用它...

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

qt pyqt objectname
2个回答
20
投票

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

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

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


0
投票

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

© www.soinside.com 2019 - 2024. All rights reserved.