Supprimer les widgets et la mise en page ainsi

J'ai essayé de trouver quelque chose qui serait de prendre un qt mise en page et de supprimer tout ce. Juste pour l'imaginer à quoi ressemble la fenêtre - j'ai:

QVBoxLayout
     | ------QHboxLayout
                 |---------QWidget
     | ------QHboxLayout
                 |---------QWidget
            .........

Donc j'ai besoin de quelque chose que je peux appeler récursivement pour EFFACER ET SUPPRIMER tous les trucs de ma mère QVBoxLayout. J'ai essayé des choses mentionnées ici ( Effacer tous les widgets dans une mise en page en pyqt ), mais aucun d'eux ne fonctionne (pas de réponse correcte marqué de toute façon). Mon code ressemble à ceci:

def clearLayout(self, layout):
    for i in range(layout.count()):
        if (type(layout.itemAt(i)) == QtGui.QHBoxLayout):
            print "layout " + str(layout.itemAt(i))
            self.clearLayout(layout.itemAt(i))
        else:
            print "widget" + str(layout.itemAt(i))
            layout.itemAt(i).widget().close()

Mais il donne une erreur:

               layout.itemAt(i).widget().close()
            AttributeError: 'NoneType' object has no attribute 'close'

=>MODIFIER
Ce genre de travaux (mais ne fait pas si il y a un autre Layout que HBoxLayout:

def clearLayout(self, layout):
    layouts = []
    for i in range(layout.count()):
        if (type(layout.itemAt(i)) == QtGui.QHBoxLayout):
            print "layout " + str(layout.itemAt(i))
            self.clearLayout(layout.itemAt(i))
            layouts.append(layout.itemAt(i))
        else:
            print "widget" + str(layout.itemAt(i))
            if (type(layout.itemAt(i)) == QtGui.QWidgetItem):
                layout.itemAt(i).widget().close()

OriginalL'auteur kosta5 | 2012-02-21