【问题标题】:How to find an object by name in pyqt?如何在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()

【问题讨论】:

    标签: qt pyqt objectname


    【解决方案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()}')
      
      

      【讨论】:

        猜你喜欢
        • 2017-08-05
        • 1970-01-01
        • 2013-03-16
        • 1970-01-01
        • 2015-11-01
        • 2023-04-01
        • 1970-01-01
        • 2018-04-15
        • 1970-01-01
        相关资源
        最近更新 更多