from PySide6.QtWidgets import ( QWidget, QVBoxLayout, QGroupBox, QRadioButton, QButtonGroup ) from PySide6.QtCore import Signal class LightVersionWidget(QWidget): """Виджет для выбора версии подсветки""" valueChanged = Signal() def __init__(self, title: str = "Подсветка", default: int = 2, options=None): super().__init__() if options is None: options = {1: "Версия 1 (старая)(только на самой первой фишке)", 2: "Версия 2 (новая, по умолчанию)"} self.options = options self.init_ui(title, default) def init_ui(self, title: str, default: int): layout = QVBoxLayout() layout.setContentsMargins(0, 0, 0, 0) group_box = QGroupBox(title) group_layout = QVBoxLayout() self.button_group = QButtonGroup(self) self.radio_buttons = {} for value, label in self.options.items(): radio = QRadioButton(label) if value == default: radio.setChecked(True) self.button_group.addButton(radio, value) self.radio_buttons[value] = radio group_layout.addWidget(radio) radio.toggled.connect(self.on_value_changed) group_box.setLayout(group_layout) layout.addWidget(group_box) self.setLayout(layout) def on_value_changed(self): """Обработчик изменения значения""" self.valueChanged.emit() def get_value(self) -> int: return self.button_group.checkedId() def set_value(self, value: int): if value in self.radio_buttons: self.radio_buttons[value].setChecked(True)