def clearLayout(layout: QLayout) -> None: """Used to remove widgets from various layouts""" if layout.count(): while (item := layout.takeAt(0)) is not None: layout.removeItem(item) item.widget().hide() item.widget().deleteLater()
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
def clearLayout(layout: QLayout): s = layout.takeAt(0) index = 0 while s: index += 1 wg = s.widget() layout.removeItem(s) layout.removeWidget(wg) wg.setVisible(False) s = layout.takeAt(0) return index
def clear_layout(layout: QLayout): """ Clear all widgets from a QLayout. :param layout: :return: """ widget_count = layout.count() for i in reversed(range(widget_count)): item = layout.itemAt(i) if isinstance(item, QWidgetItem): item.widget().close() else: clear_layout(item.layout()) # Remove item from layout layout.removeItem(item)
def remove_trailing_spacer_from_layout(layout: QLayout): """ If the last item in the layout is spacer, removes it. :param layout: target layout :return: bool success indicator """ ni = layout.count() if ni < 1: return False ni -= 1 layout_item = layout.itemAt(ni) if layout_item is None: return False spacer_item = layout_item.spacerItem() if spacer_item is not None: layout.removeItem(spacer_item) return True return False
def remove_item_from_layout(layout: QLayout, item): if item: if isinstance(item, QWidgetItem): w = item.widget() layout.removeWidget(w) # noinspection PyTypeChecker w.setParent(None) del w elif isinstance(item, QLayout): for subitem_idx in reversed(range(item.count())): subitem = item.itemAt(subitem_idx) WndUtils.remove_item_from_layout(item, subitem) layout.removeItem(item) # noinspection PyTypeChecker item.setParent(None) del item elif isinstance(item, QSpacerItem): del item else: raise Exception('Invalid item type')
def remove_layout_items(layout: QLayout): for widget in get_layout_widgets(layout): widget.deleteLater() while layout.count(): item = layout.itemAt(0) layout.removeItem(item)
def clear_layout(qlayout: QLayout): """Removes all children of a layout.""" for i in reversed(range(qlayout.count())): item = qlayout.itemAt(i) qlayout.removeItem(item) item.widget().deleteLater()