循环布局中的小部件内的小部件

时间:2016-09-12 12:18:30

标签: python pyqt qgroupbox

类似问题我们在这里Loop over widgets in PyQt Layout,但有点复杂......

我有

QVGridLayout
   QGroupBox
      QGridLayout
         QLineEdit

我想访问QLineEdit但到目前为止我不知道如何访问QGroupBox的子项

        for i in range(self.GridLayout.count()):
            item = self.GridLayout.itemAt(i)
            for i in range(item.count()):
                lay = item.itemAt(i)
                edit = lay.findChildren(QLineEdit)
                print edit.text()

任何人都可以指向正确的方向吗?

2 个答案:

答案 0 :(得分:2)

当窗口小部件添加到布局时,它会自动成为窗口小部件的子窗口。所以这个例子简化为一个双线:

for group in self.GridLayout.parentWidget().findChildren(QGroupBox):
    for edit in group.findChildren(QLineEdit):
        # do stuff with edit

但是,findChildren 递归,因此如果所有行编辑都在分组框中,则可以将其简化为单行:

for edit in self.GridLayout.parentWidget().findChildren(QLineEdit):
    # do stuff with edit

答案 1 :(得分:0)

排序:

for i in range(self.GridLayout.count()):
     item = self.GridLayout.itemAt(i)
     if type(item.widget()) == QGroupBox:
          child =  item.widget().children()

我不得不使用item.widget()来访问GroupBox。 希望这有助于某些人。