def removeAllWidgetsFromLayout(layout:QLayout, types=None): l = [layout.itemAt(i).widget() for i in range(layout.count())] for w in l: if not types or isinstance(w, types): w.deleteLater() # w.setParent(None) # prefer deleteLater to bypass the bug caused by consecutive signal from editfinsihing (lose focus and press enter at the same time) layout.removeWidget(w)
def clearLayout(layout: QtWidgets.QLayout): for i in reversed(range(layout.count())): layout.itemAt(i).widget().setParent(gg(None, QtCore.QObject)) if layout.itemAt(i).widget() \ else layout.removeItem(layout.itemAt(i))