from PySide6.QtWidgets import QWidget, QVBoxLayout, QLabel, QHBoxLayout, QGroupBox, QGridLayout, QLineEdit, QPushButton, QScrollArea def build_byte_page(self): self.byte_page = QScrollArea() self.byte_page.setWidgetResizable(True) content = QWidget() self.byte_page.setWidget(content) layout = QVBoxLayout(content) hint = QLabel("TMS2812: адрес слова — 32 бита; значение — 16 бит (0000…FFFF). " "Адрес: десятичный, $HEX или 0xHEX. Запись проверяется чтением.") hint.setWordWrap(True) layout.addWidget(hint) panels = QHBoxLayout() for write in (True, False): group = QGroupBox("Запись" if write else "Чтение") form = QGridLayout(group) address = QLineEdit("$1000") value = QLineEdit("0000" if write else "") binary = QLineEdit("0000 0000 0000 0000" if write else "") binary.setMinimumWidth(220) value.setReadOnly(not write) binary.setReadOnly(not write) for row, (title, widget) in enumerate((("Адрес", address), ("Байт (hex)", value), ("Байт (bin)", binary))): form.addWidget(QLabel(title), row * 2, 0) form.addWidget(widget, row * 2 + 1, 0) button = QPushButton("Записать" if write else "Прочитать") form.addWidget(button, 6, 0) if write: self.byte_write_address, self.byte_write_value, self.byte_write_binary = address, value, binary value.textEdited.connect(lambda text: self._sync_byte_value(text, 16)) binary.textEdited.connect(lambda text: self._sync_byte_value(text, 2)) button.clicked.connect(lambda: self._start_byte(True)) else: self.byte_read_address, self.byte_read_value, self.byte_read_binary = address, value, binary button.clicked.connect(lambda: self._start_byte(False)) panels.addWidget(group) layout.addLayout(panels) status = QLabel("Нет данных от контроллера") status.setWordWrap(True) self.status_changed.connect(status.setText) layout.addWidget(status) from pysetterminal.rawprotocol import RawProtocol, RawProtocolWidget from pysetterminal.serialbus import SerialBus, SerialTab self.pyset_protocol = RawProtocol(self) self.pyset_raw_widget = RawProtocolWidget(self.pyset_protocol) self.pyset_bus_widget = SerialTab(SerialBus(self.pyset_protocol), self.pyset_protocol, self.pyset_raw_widget) layout.addWidget(self.pyset_bus_widget) layout.addWidget(self.pyset_raw_widget) layout.addStretch()