100 lines
3.6 KiB
Python
100 lines
3.6 KiB
Python
|
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())
|