Entfernen von widgets und layout sowie

War ich versucht, etwas zu finden, die ein qt-layout und löschen alles aus. Nur vorstellen, wie das Fenster aussieht - ich habe:

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

So, ich brauche etwas, das ich anrufen kann rekursiv zu LÖSCHEN UND LÖSCHEN Sie alle Sachen von meinen Eltern QVBoxLayout. Ich habe versucht, die Dinge, die hier erwähnt ( Deaktivieren Sie alle widgets in einem layout in pyqt ), aber keiner von Ihnen arbeiten (keine richtige Antwort markiert jedenfalls). Mein code sieht wie folgt aus:

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()

Aber es gibt einen Fehler:

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

=>BEARBEITEN
Diese ein bisschen arbeiten (aber nicht wenn es andere Layout als 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()

InformationsquelleAutor kosta5 | 2012-02-21

Schreibe einen Kommentar