PyQT: получить рекурсивных потомков виджета

У кого-нибудь есть удобная функция, которая вернет вложенное дерево всех дочерних элементов определенного виджета?

Я знаком с dumpObjectTree(), но не могу компилировать в режиме отладки, поэтому у меня нет доступа к этой функции.

Пытаюсь найти конкретный виджет, и я вручную просматриваю иерархию детей(). Должен быть лучший способ!


person ack    schedule 07.06.2010    source источник


Ответы (2)


QObject.findChild (или findChildren) будет рекурсивно искать дочерний элемент и должен делать то, что вам нужно.

person Kaleb Pederson    schedule 07.06.2010
comment
Мой коллега написал довольно глубокое дерево объектов (MainWindow содержит производные QGroupBox-ы, которые содержат производные QGraphicsScene-ы и т.д.). Вместо того, чтобы прилагать дополнительные усилия, чтобы называть вещи, а затем находить их имена (рекурсивно?), Я бы предпочел просто выгрузить все дерево, чтобы использовать его как шпаргалку... - person Phlip; 24.12.2012
comment
Что-то вроде: def dump(thing, depth=0): print ' ' * depth + repr(thing) для ребенка в thing.children(): dump(kid, depth + 1) dump(self.mainWindow) - person Phlip; 24.12.2012

Я обнаружил, что у QObject есть метод dumpObjectTree по этой ссылке . Это то, что вы ищете?

person Mr. Frobenius    schedule 12.11.2020