from PySide6.QtWidgets import QWidget from PySide6.QtCore import Slot, Signal, SignalInstance from ui_var_details import Ui_Widget from param_data import ParamDataVar from br_com_message import BrComMessage class BrWidgetVarDetails(QWidget, Ui_Widget): signal_read: SignalInstance = Signal(BrComMessage) signal_write: SignalInstance = Signal(BrComMessage) def __init__(self, parent=None): super().__init__(parent) self.setupUi(self) self.param_data: ParamDataVar = None def update_param_info(self, p_data: ParamDataVar): self.param_data = p_data self.label_addr.setText(str(p_data.addr)) self.label_name.setText(str(p_data.name)) self.label_details.setText(str(p_data.details)) self.lineEdit_var.setText(str(p_data.val())) @Slot() def on_pushButton_read_clicked(self): print('[read] button clicked!') # 生成读取命令,然后触发读取事件 m_msg = BrComMessage( BrComMessage.OP_READ, self.param_data.addr) self.signal_read.emit(m_msg) @Slot() def on_pushButton_write_clicked(self): print('[write] button clicked!') # 获取数值 _write_val = float(self.lineEdit_var.text()) m_msg = BrComMessage( BrComMessage.OP_WRITE, self.param_data.addr, _write_val ) self.signal_write.emit(m_msg) if __name__ == "__main__": from PySide6.QtWidgets import QApplication import sys app = QApplication() widget = BrWidgetVarDetails() param_data = ParamDataVar(10, 'name', 'NULL', 0) widget.update_param_info(param_data) widget.show() sys.exit(app.exec())