Esempio n. 1
0
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()
Esempio n. 2
0
    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
Esempio n. 3
0
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
Esempio n. 4
0
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)
Esempio n. 5
0
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')
Esempio n. 7
0
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)
Esempio n. 8
0
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()