2010-06-07 7 views
1

Quelqu'un at-il une fonction lisse qui retournera un arbre imbriqué de tous les enfants d'un widget particulier?PyQT: obtenir des enfants récursifs d'un widget

Je suis familier avec dumpObjectTree() mais je ne suis pas capable de compiler en mode débogage, donc je n'ai pas accès à cette fonction.

Vous essayez de trouver un widget particulier et je parcours manuellement la hiérarchie children(). Il doit y avoir un meilleur moyen!

Répondre

3

QObject.findChild (ou findChildren) recherche récursivement un enfant et devrait faire ce dont vous avez besoin.

+0

Veillez à utiliser 'setObjectName' pour que cela fonctionne correctement. –

+0

Mon collègue a écrit un arbre d'objets assez profond (une MainWindow contient des QGroupBox-es dérivés, qui contiennent des QGraphicsScene-s dérivés, etc ...). Au lieu de faire l'effort supplémentaire de nommer les choses, puis de trouver leurs noms (de manière récursive?), Je préférerais juste jeter l'arbre entier, pour l'utiliser comme feuille de triche ... – Phlip

+0

Quelque chose comme: def dump (chose, profondeur = 0): impression '' * profondeur + repr (chose) pour enfant dans thing.children(): vidage (enfant, profondeur + 1) vidage (self.mainWindow) – Phlip