我有一个字典列表:
globalParams = [{'attr':'enabled','ctrl':'checkBoxEnabled','type':'checkBox'},
{'attr':'colorMode','ctrl':'comboBoxColorMode','type':'comboBox'}]
'ctrl'-Qt窗口中控件的名称。
通常,代码如下:
self.checkBoxEnabled.checkState()
但是checkBoxEnabled是一个对象。而且我只有一个字符串名称“ checkBoxEnabled”,无法使用它...
如何在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()}')