如何在pyqt中按名称查找对象?
Posted
技术标签:
【中文标题】如何在pyqt中按名称查找对象?【英文标题】:How to find an object by name in pyqt? 【发布时间】:2013-09-27 10:35:15 【问题描述】:我有一个字典列表:
globalParams = ['attr':'enabled','ctrl':'checkBoxEnabled','type':'checkBox',
'attr':'colorMode','ctrl':'comboBoxColorMode','type':'comboBox']
'ctrl' - Qt 窗口中控件的名称。
一般情况下,代码如下:
self.checkBoxEnabled.checkState()
但 checkBoxEnabled 是一个对象。而且我只有一个字符串名称'checkBoxEnabled'并且不能使用它......
如何在 pyqt 中按名称查找对象?就像是? self.GetObjectByName('checkBoxEnabled').checkState()
【问题讨论】:
【参考方案1】:您可以使用QObject::findChild
方法。在pyqt中应该这样写:
checkbox = self.findChild(QtGui.QCheckBox, "checkBoxEnabled")
self
应该是复选框的父窗口小部件。
【讨论】:
【参考方案2】:要在您的 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()')
【讨论】:
以上是关于如何在pyqt中按名称查找对象?的主要内容,如果未能解决你的问题,请参考以下文章
如何检查从服务器收到的响应是 html 还是 json 并在 extjs 中按名称查找 html 表单?