2016-09-12 4 views
0

Похожие вопросы к тому, что мы имеем здесь Loop over widgets in PyQt Layout, но немного более сложный ...Looping над виджеты внутри виджетов внутри макетов

У меня есть

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

Сортировка:

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

Я должен был использовать item.widget(), чтобы получить доступ к GroupBox. Надеюсь, это поможет some1.

1

Когда виджет добавлен в макет, он автоматически становится дочерним элементом виджетов, на котором он установлен. Таким образом, например, сводится к двум вкладышем:

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 
Смежные вопросы