我有一个字典列表:
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()}')