Dar*_*usz 4 python pyqt qgroupbox
与我们在 PyQt Layout 中 Loop over widgets 的问题类似,但有点复杂...
我有
QVGridLayout
QGroupBox
QGridLayout
QLineEdit
Run Code Online (Sandbox Code Playgroud)
我想访问 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()
Run Code Online (Sandbox Code Playgroud)
any1可以指出我正确的方向吗?
当一个小部件被添加到一个布局时,它会自动成为设置它的布局的小部件的子级。所以这个例子简化为两行:
for group in self.GridLayout.parentWidget().findChildren(QGroupBox):
for edit in group.findChildren(QLineEdit):
# do stuff with edit
Run Code Online (Sandbox Code Playgroud)
但是,findChildren是递归的,因此如果所有行编辑都在组框中,则可以将其简化为单行:
for edit in self.GridLayout.parentWidget().findChildren(QLineEdit):
# do stuff with edit
Run Code Online (Sandbox Code Playgroud)
排序:
for i in range(self.GridLayout.count()):
item = self.GridLayout.itemAt(i)
if type(item.widget()) == QGroupBox:
child = item.widget().children()
Run Code Online (Sandbox Code Playgroud)
我必须使用 item.widget() 才能访问 GroupBox。希望这对一些人有帮助1。
| 归档时间: |
|
| 查看次数: |
2697 次 |
| 最近记录: |