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