类似问题我们在这里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()
任何人都可以指向正确的方向吗?
答案 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。 希望这有助于某些人。