rnc_tuning/br_widget_basic_plot.py

100 lines
3.6 KiB
Python
Raw Normal View History

2025-02-14 11:11:41 +08:00
from ui_basic_plot import Ui_Dialog
from PySide6.QtWidgets import QDialog, QToolButton, QMenu, QFileDialog
from PySide6.QtGui import QAction
class BrWidgetBasicPlot(QDialog, Ui_Dialog):
line_color_list = [(0, 0, 255), (255, 0, 0), (0, 255, 0), (128, 128, 0), (128, 0, 0), (128, 128, 128)]
def __init__(self):
super().__init__()
self.plot = None
self.chart_data = []
self.action_delete = None
self.action_saveas = None
self.action_save = None
self.action_load = None
self.action1 = None
self.menu = None
self.line_color_index = 0
self.setupUi(self)
self.init_ui()
self.init_plot()
def init_ui(self):
self.toolButton_operation.setPopupMode(QToolButton.ToolButtonPopupMode.InstantPopup)
menu = QMenu(self)
self.action_load = QAction('加载', self)
self.action_load.triggered.connect(self.on_action_load)
self.action_save = QAction('保存', self)
self.action_save.triggered.connect(self.on_action_save)
self.action_saveas = QAction('另存', self)
self.action_saveas.triggered.connect(self.on_action_saveas)
self.action_delete = QAction('删除', self)
self.action_delete.triggered.connect(self.on_action_delete)
menu.addAction(self.action_load)
menu.addAction(self.action_save)
menu.addAction(self.action_saveas)
menu.addAction(self.action_delete)
self.menu = menu
self.toolButton_operation.setMenu(menu)
def init_plot(self):
self.plot = self.graphicsView.addPlot(title="Chart")
self.plot.showGrid(x=True, y=True)
self.graphicsView.setBackground('w')
def on_action_load(self):
print('action1 triggered')
# 实现文件加载
filename, filetype = QFileDialog.getOpenFileName(self,
"选取文件",
"./",
"Data Files (*.brdata)") # 设置文件扩展名过滤,注意用双分号间隔
if filename != '':
# 加载文件中的数据
try:
with open(filename, 'r') as f:
_data = f.read()
data_list = eval(_data)
self.line_color_index += 1
except Exception as e:
print(e)
self.plot.plot(data_list, pen=self.line_color_list[self.line_color_index], name=filename)
def set_chart_data(self, chart_data, param_name):
self.chart_data = chart_data
print(param_name)
self.plot.plot(chart_data, pen=self.line_color_list[self.line_color_index], name=param_name)
def on_action_save(self):
print('action2 triggered')
# 文件保存功能
print(self.chart_data)
fileName2, ok2 = QFileDialog.getSaveFileName(self,
"文件保存",
"./",
"Data Files (*.brdata)")
# 用户在文件保存对话框中选择了取消
if fileName2 != '':
with open(fileName2, 'w') as f:
f.write(str(self.chart_data))
def on_action_saveas(self):
print('action3 triggered')
def on_action_delete(self):
print('action delete triggered')
if __name__ == "__main__":
from PySide6.QtWidgets import QApplication
import sys
app = QApplication()
widget = BrWidgetBasicPlot()
widget.show()
sys.exit(app.exec())