我試圖找到一些需要qt佈局並刪除它的一切。只是想象中的窗口是什麼樣子 - 我有:刪除小部件和佈局以及
QVBoxLayout
| ------QHboxLayout
|---------QWidget
| ------QHboxLayout
|---------QWidget
.........
所以我需要的東西,我可以打電話給遞歸清楚,從我的父母QVBoxLayout
刪除所有的東西。我嘗試過這裏提到的東西(Clear all widgets in a layout in pyqt),但它們都不起作用(無論如何都沒有正確答案)。我的代碼如下所示:
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()
但它給出了一個錯誤:
layout.itemAt(i).widget().close()
AttributeError: 'NoneType' object has no attribute 'close'
=>編輯 這還挺工程(但不是否有任何其他Layout
比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()
這是一個更優雅的解決方案。謝謝 – tisaconundrum 2016-12-27 22:16:02