Удалить виджеты и макет, а также
Я пытался найти что-то, что могло бы взять макет qt и удалить из него все Просто чтобы представить, как выглядит окно - у меня есть:
QVBoxLayout | ------QHboxLayout |---------QWidget | ------QHboxLayout |---------QWidget .........
So I need something that I can call recursively to CLEAR AND DELETE all the stuff from my parent
QVBoxLayout
. I tried things mentioned here (Clear all widgets in a layout in pyqt) but none of them work (no correct answer marked anyway). My code looks like this: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()
But it gives an error:
layout.itemAt(i).widget().close() AttributeError: 'NoneType' object has no attribute 'close'
=>EDIT This kinda works (but doesn't if there is any other
Layout
thanHBoxLayout
: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()