from PySide6.QtWidgets import ( QWidget, QVBoxLayout, QGroupBox, QRadioButton, QButtonGroup ) from PySide6.QtCore import Signal class HopperSensorWidget(QWidget): """Виджет для выбора типа датчика хоппера""" valueChanged = Signal() def __init__(self): super().__init__() self.init_ui() def init_ui(self): layout = QVBoxLayout() layout.setContentsMargins(0, 0, 0, 0) group_box = QGroupBox("Тип датчика хоппера") group_layout = QVBoxLayout() self.button_group = QButtonGroup(self) self.radio_normally_open = QRadioButton("Нормально разомкнутый (по умолчанию)(китайский)") self.radio_normally_open.setChecked(True) self.button_group.addButton(self.radio_normally_open, 1) self.radio_normally_closed = QRadioButton("Нормально замкнутый (русский)") self.button_group.addButton(self.radio_normally_closed, 2) group_layout.addWidget(self.radio_normally_open) group_layout.addWidget(self.radio_normally_closed) group_box.setLayout(group_layout) layout.addWidget(group_box) self.button_group.buttonToggled.connect(self.on_value_changed) self.setLayout(layout) def on_value_changed(self): """Обработчик изменения значения""" self.valueChanged.emit() def get_value(self) -> str: """Возвращает '0' для нормально разомкнутого, '1' для нормально замкнутого""" return '0' if self.button_group.checkedId() == 1 else '1' def set_value(self, value: str): """Устанавливает значение из строки '0' или '1'""" if value == '0': self.radio_normally_open.setChecked(True) else: self.radio_normally_closed.setChecked(True)