我有一个词典列表:
globalParams = [{'attr':'enabled','ctrl':'checkBoxEnabled','type':'checkBox'},
{'attr':'colorMode','ctrl':'comboBoxColorMode','type':'comboBox'}]
'ctrl' - Qt窗口中控件的名称。
通常,代码如下:
self.checkBoxEnabled.checkState()
但checkBoxEnabled是一个对象。我只有一个字符串名称'checkBoxEnabled',不能使用它...
如何在pyqt中按名称查找对象?就像是? 自我。的 GetObjectByName( 'checkBoxEnabled') .checkState()
答案 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()}')