rnc_tuning/br_widget_arr_details.py
2025-02-14 11:11:41 +08:00

97 lines
3.2 KiB
Python

from ui_arr_details import Ui_Widget
from PySide6.QtWidgets import QWidget, QTableWidgetItem
from PySide6.QtCore import Slot, Signal, SignalInstance
from param_data import ParamDataArr
from br_com_message import BrComMessage
from br_widget_basic_plot import BrWidgetBasicPlot
class BrWidgetArrDetails(QWidget, Ui_Widget):
signal_read: SignalInstance = Signal(list)
def __init__(self, parent=None):
super().__init__(parent)
self.setupUi(self)
self.param_data: ParamDataArr = None
# self.tableWidget_val.setRowCount(10)
self.tableWidget_val.setColumnCount(2)
self.tableWidget_val.setHorizontalHeaderLabels(['Addr', 'Value'])
# self.tableWidget_setval.setRowCount(10)
self.tableWidget_setval.setColumnCount(2)
self.tableWidget_setval.setHorizontalHeaderLabels(['Addr', 'Value'])
def update_param_info(self, p_data: ParamDataArr):
self.param_data = p_data
print(self.param_data.getval_list)
self.label_addr.setText(str(p_data.addr))
self.label_name.setText(str(p_data.name))
self.label_length.setText(str(p_data.size))
self.label_details.setText(str(p_data.details))
self.update_table()
def update_table(self):
self.tableWidget_val.setRowCount(self.param_data.size)
for row in range(0, self.param_data.size):
self.tableWidget_val.setItem(
row, 0, QTableWidgetItem(
str(self.param_data.addr + row)
)
)
self.tableWidget_val.setItem(
row, 1, QTableWidgetItem(
str(self.param_data.getval_list[row]))
)
def update_val_list(self):
for i in range(0, self.param_data.size):
self.tableWidget_val.setItem(0, i, QTableWidgetItem(str(self.param_data.getval_list[i])))
def update_setval_list(self):
for i in range(0, len(self.param_data.setval_list)):
self.tableWidget_setval.setItem(0, i, QTableWidgetItem(str(self.param_data.setval_list[i])))
@Slot()
def on_pushButton_write_clicked(self):
print('[write] button clicked!')
@Slot()
def on_pushButton_read_clicked(self):
print('[read] button clicked!')
# 生成一组读取命令
_cmd_list = []
for i in range(0, self.param_data.size):
_cmd_list.append(
BrComMessage(
BrComMessage.OP_READ,
self.param_data.addr + i
)
)
self.signal_read.emit(_cmd_list)
@Slot()
def on_pushButton_valplot_clicked(self):
print('[valpolt] button clicked!')
self.dialog = BrWidgetBasicPlot()
self.dialog.set_chart_data(self.param_data.getval_list, self.param_data.name)
self.dialog.show()
@Slot()
def on_pushButton_setvalplot_clicked(self):
print('[setvalplot] button clicked!')
if __name__ == "__main__":
from PySide6.QtWidgets import QApplication
import sys
app = QApplication()
widget = BrWidgetArrDetails()
param_data = ParamDataArr(10, 'name', 'NULL', 0, 10)
widget.update_param_info(param_data)
widget.update_val_list()
widget.update_setval_list()
widget.show()
sys.exit(app.exec())