一,删除没有子布局的布局里面的控件:
for i in reversed(range(self.layout1.count())):#倒序删除
item = self.layout1.itemAt(i)
# print(type(item), type(item.widget()))
if item.widget():
self.layout1.itemAt(i).widget().deleteLater()
else:#当item.widget()的返回值是None时
self.layout1.removeItem(item);
注意,item.widget()的返回值有可能为None,这样的话调用deleteLater()就会出问题,所以就不要在语句 if item.widget() == False: 里面调用它。
二,删除有子布局里面的控件
这里只展示只有一层子布局的例子:
for i in reversed(range(self.layout1.count())):#倒序删除
item = self.layout1.itemAt(i)
# print(type(item), type(item.widget()))
if item.widget():
self.layout1.itemAt(i).widget().deleteLater()
else:
if type(item) == type(QHBoxLayout()):
# print(item.count())
for j in reversed(range(item.count())):
if item.itemAt(j).widget():
# print('到达')
item.itemAt(j).widget().deleteLater()
注意,当子布局或者布局里面的控件不是全局变量时,删除有可能失败。