You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
42 lines
1.2 KiB
42 lines
1.2 KiB
2 years ago
|
# coding:utf-8
|
||
|
from typing import List
|
||
|
from PySide6.QtCore import Qt
|
||
|
from PySide6.QtWidgets import QVBoxLayout, QWidget
|
||
|
|
||
|
|
||
|
class VBoxLayout(QVBoxLayout):
|
||
|
""" Vertical box layout """
|
||
|
|
||
|
def __init__(self, parent):
|
||
|
super().__init__(parent)
|
||
|
self.widgets = []
|
||
|
|
||
|
def addWidgets(self, widgets: List[QWidget], stretch=0, alignment=Qt.AlignTop):
|
||
|
""" add widgets to layout """
|
||
|
for widget in widgets:
|
||
|
self.addWidget(widget, stretch, alignment)
|
||
|
|
||
|
def addWidget(self, widget: QWidget, stretch=0, alignment=Qt.AlignTop):
|
||
|
""" add widget to layout """
|
||
|
super().addWidget(widget, stretch, alignment)
|
||
|
self.widgets.append(widget)
|
||
|
widget.show()
|
||
|
|
||
|
def removeWidget(self, widget: QWidget):
|
||
|
""" remove widget from layout but not delete it """
|
||
|
super().removeWidget(widget)
|
||
|
self.widgets.remove(widget)
|
||
|
|
||
|
def deleteWidget(self, widget: QWidget):
|
||
|
""" remove widget from layout and delete it """
|
||
|
self.removeWidget(widget)
|
||
|
widget.hide()
|
||
|
widget.deleteLater()
|
||
|
|
||
|
def removeAllWidget(self):
|
||
|
""" remove all widgets from layout """
|
||
|
for widget in self.widgets:
|
||
|
super().removeWidget(widget)
|
||
|
|
||
|
self.widgets.clear()
|