def metadata_window_clear_layout(self, layout: QtWidgets.QLayout) -> None: if layout is None: return r = [] i = layout.count() while i > 0: i -= 1 r.append(i) for i in r: child = layout.itemAt(i) # print(child) if isinstance(child, QtWidgets.QWidgetItem): try: child.widget().setVisible(False) layout.removeWidget(child.widget()) # child.widget().deleteLater() except Exception: traceback.print_exc() elif isinstance(child, QtWidgets.QSpacerItem): layout.removeItem(child) elif isinstance(child, (QtWidgets.QLayoutItem, QtWidgets.QHBoxLayout)): self.metadata_window_clear_layout(child) layout.removeItem(child) del child