53 lines
1.8 KiB
Python
53 lines
1.8 KiB
Python
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) |