pyqt清除所有控件包括widget layout和addstrench添加的space

在pyqt的layout中不止widget,每次刷新要删除部分控件,这里永乐这个函数可以删除所有控件

def deleteAll(self,thisLayout):
        item_list = list(range(thisLayout.count()))
        item_list.reverse()  # 倒序删除,避免影响布局顺序

        for i in item_list:
            item = thisLayout.itemAt(i)
            if item is not None:
                if item.widget() is not None:
                    item.widget().deleteLater()
                elif isinstance(item, QSpacerItem):
                    thisLayout.removeItem(item)
                else:
                    self.deleteAll(item.layout())
                thisLayout.removeItem(item)

你可能感兴趣的:(pyqt,ui)