Files
templates/python/pysetterminal/panel.py

50 lines
2.6 KiB
Python

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()