Spaces:
Runtime error
Runtime error
from PySide6.QtWidgets import QWidget, QVBoxLayout, QHBoxLayout, QLabel | |
from PySide6.QtWidgets import QAbstractItemView, QTableWidgetItem, QHeaderView, QListView | |
from PySide6.QtWidgets import QComboBox, QRadioButton, QLineEdit, QSpinBox, QDoubleSpinBox, QListWidget, QTableWidget | |
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) | |
else: | |
self.table.horizontalHeader().setVisible(False) | |
self.table.setEditTriggers(QAbstractItemView.EditTrigger.NoEditTriggers) | |
self.table.horizontalHeader().setSectionResizeMode(QHeaderView.ResizeMode.Stretch) | |
self.table.verticalHeader().setSectionResizeMode(QHeaderView.ResizeMode.Stretch) | |
self.table.verticalHeader().setVisible(False) | |
layout.addWidget(self.label) | |
layout.addWidget(self.table) | |
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)) | |
class ListWithLabel(LabelWidget): | |
def __init__(self, label, max_select: int = 4, items: list = None): | |
super().__init__(label) | |
layout = QVBoxLayout(self) | |
self.max_select = max_select | |
self.list = QListWidget() | |
self.list.setSelectionMode(QAbstractItemView.SelectionMode.MultiSelection) | |
self.list.setResizeMode(QListView.ResizeMode.Adjust) | |
if items: | |
self.set_items(items) | |
layout.addWidget(self.label) | |
layout.addWidget(self.list) | |
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() | |
self.items = [] | |
if items: | |
self.set_items(items) | |
if index: | |
self.combo_box.setCurrentIndex(index) | |
layout.addWidget(self.label) | |
layout.addWidget(self.combo_box) | |
layout.addStretch() | |
def set_items(self, items, keep_index=False, default_index=0): | |
self.items = items | |
self.combo_box.blockSignals(True) | |
current_text = self.combo_box.currentText() | |
self.combo_box.clear() | |
self.combo_box.addItems(items) | |
self.combo_box.blockSignals(False) | |
if keep_index and current_text and current_text in items: | |
self.combo_box.setCurrentIndex(items.index(current_text)) | |
else: | |
self.combo_box.setCurrentIndex(default_index) | |
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(10 ** 8) | |
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 DoubleSpinWithLabel(LabelWidget): | |
def __init__(self, label, info="", minimum=None, maximum=None, value=None): | |
super().__init__(label, info) | |
layout = QVBoxLayout() | |
self.setLayout(layout) | |
self.spin_box = QDoubleSpinBox() | |
if minimum: | |
self.spin_box.setMinimum(minimum) | |
if maximum: | |
self.spin_box.setMaximum(maximum + 1) | |
else: | |
self.spin_box.setMaximum(10 ** 8) | |
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): | |
super().__init__(label) | |
layout = QVBoxLayout(self) | |
self.text_browser = QLineEdit() | |
layout.addWidget(self.label) | |
layout.addWidget(self.text_browser) | |
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() | |
def set_text(self, text): | |
self.text.setText(text) | |