Spaces:
Runtime error
Runtime error
from PySide6.QtWidgets import QWidget, QVBoxLayout, QHBoxLayout, QLabel, QAbstractItemView, QTableWidgetItem, \ | |
QHeaderView, QSizePolicy | |
from PySide6.QtWidgets import QComboBox, QRadioButton, QTextBrowser, QTextEdit, QSpinBox, QListWidget, QTableWidget | |
from PySide6.QtCore import Qt | |
class LabelWidget(QWidget): | |
def __init__(self, label, info: str = ""): | |
super().__init__() | |
if info: | |
self.label = QLabel(f"{label} - {info}") | |
else: | |
self.label = QLabel(label) | |
def set_label(self, label): | |
self.label.setText(label) | |
class TableWithLabel(LabelWidget): | |
def __init__(self, label, row_count: int = 0, column_count: int = 0, headers: list = None): | |
super().__init__(label) | |
layout = QVBoxLayout() | |
self.setLayout(layout) | |
self.table = QTableWidget() | |
if row_count: | |
self.table.setRowCount(row_count) | |
if column_count: | |
self.table.setColumnCount(column_count) | |
if headers: | |
self.table.setColumnCount(len(headers)) | |
self.table.setHorizontalHeaderLabels(headers) | |
self.table.setEditTriggers(QAbstractItemView.EditTrigger.NoEditTriggers) | |
layout.addWidget(self.label) | |
layout.addWidget(self.table) | |
layout.addStretch() | |
def set_content(self, content): | |
self.table.setRowCount(len(content)) | |
for i, row in enumerate(content): | |
for j, e in enumerate(row): | |
self.table.setItem(i, j, QTableWidgetItem(e)) | |
self.table.resizeColumnsToContents() | |
class ListWithLabel(LabelWidget): | |
def __init__(self, label, items: list = None): | |
super().__init__(label) | |
layout = QVBoxLayout() | |
self.setLayout(layout) | |
self.list = QListWidget() | |
self.list.setSelectionMode(QAbstractItemView.SelectionMode.MultiSelection) | |
if items: | |
self.list.addItems(items) | |
layout.addWidget(self.label) | |
layout.addWidget(self.list) | |
layout.addStretch() | |
def set_items(self, items): | |
self.list.clear() | |
self.list.addItems(items) | |
class ComboWithLabel(LabelWidget): | |
def __init__(self, label, info: str = "", items: list = None, index=None): | |
super().__init__(label, info) | |
layout = QVBoxLayout() | |
self.setLayout(layout) | |
self.combo_box = QComboBox() | |
if items: | |
self.combo_box.addItems(items) | |
if index: | |
self.combo_box.setCurrentIndex(index) | |
layout.addWidget(self.label) | |
layout.addWidget(self.combo_box) | |
layout.addStretch() | |
def set_items(self, items): | |
self.combo_box.blockSignals(True) | |
self.combo_box.clear() | |
self.combo_box.addItems(items) | |
self.combo_box.blockSignals(False) | |
class RadioWithLabel(LabelWidget): | |
def __init__(self, label, text: str = None): | |
super().__init__(label) | |
layout = QVBoxLayout() | |
self.setLayout(layout) | |
self.radio_button = QRadioButton() | |
if text: | |
self.radio_button.setText(text) | |
layout.addWidget(self.label) | |
layout.addWidget(self.radio_button) | |
layout.addStretch() | |
def set_text(self, text): | |
self.radio_button.setText(text) | |
class SpinWithLabel(LabelWidget): | |
def __init__(self, label, info="", minimum=None, maximum=None, value=None): | |
super().__init__(label, info) | |
layout = QVBoxLayout() | |
self.setLayout(layout) | |
self.spin_box = QSpinBox() | |
if minimum: | |
self.spin_box.setMinimum(minimum) | |
if maximum: | |
self.spin_box.setMaximum(maximum + 1) | |
else: | |
self.spin_box.setMaximum(10e8) | |
if value: | |
self.spin_box.setValue(value) | |
layout.addWidget(self.label) | |
layout.addWidget(self.spin_box) | |
layout.addStretch() | |
def set_value(self, value): | |
self.spin_box.setValue(value) | |
class TextWithLabel(LabelWidget): | |
def __init__(self, label, stretch: bool = True, editable: bool = False): | |
super().__init__(label) | |
layout = QVBoxLayout(self) | |
if editable: | |
self.text_browser = QTextEdit() | |
else: | |
self.text_browser = QTextBrowser() | |
layout.addWidget(self.label) | |
layout.addWidget(self.text_browser) | |
if stretch: | |
layout.addStretch() | |
def set_text(self, text): | |
self.text_browser.setText(text) | |
class LabelWithLabel(QWidget): | |
def __init__(self, label): | |
super().__init__() | |
layout = QHBoxLayout() | |
self.setLayout(layout) | |
self.label = QLabel(label) | |
self.text = QLabel() | |
# self.text_browser.textChanged.connect(self.resize_height) | |
layout.addWidget(self.label) | |
layout.addWidget(self.text) | |
layout.addStretch() | |