Python 图形界面设计:PyQt6与MatPlotlib实现简易绘图小程序

2023-06-0516:02:37编程语言入门到精通Comments1,949 views字数 1392阅读模式

Part1开头

前几天转发了当气象绘图碰上PyQt5文章源自菜鸟学院-https://www.cainiaoxueyuan.com/ymba/44856.html

成品如图:Python 图形界面设计:PyQt6与MatPlotlib实现简易绘图小程序文章源自菜鸟学院-https://www.cainiaoxueyuan.com/ymba/44856.html

Part2今天任务

今天主要任务就是复刻一个PyQt6绘图程序。主要功能是选择文件,把选择的文件在一个LineEdit中显示出来,这是一个特定的时间序列数据,把这个序列求平均,计算均方差,标准差,把平均值、均方差、标准差绘到一张图上。文章源自菜鸟学院-https://www.cainiaoxueyuan.com/ymba/44856.html

一个WidGet上,填加按钮(QPushButton)、编辑框、和FigureCanvas,FigureCanvas做为Matplotlib的容器,绘图部分都是在Matplotlib中实现,最后把Figure()给回FigureCanvas,通过LayoutaddWidget把那个容器当一个组件填加进来进行展示。绘图过程都是通过MatPlotlib实现,保存也是通过fig.save实现。整体就是这么一个思路。文章源自菜鸟学院-https://www.cainiaoxueyuan.com/ymba/44856.html

Part3出错

绘图是原来已有的代码改的,需要适配PyQt6。另外addWidget执行一次没问题,画完第一张图,再画第二张,会把原来的绘图区一分为二,再画一次分三份。找到原因后,看有没有Canvas这个组件,有就删除,没有就正常执行。文章源自菜鸟学院-https://www.cainiaoxueyuan.com/ymba/44856.html

Part4最后看成品:

Python 图形界面设计:PyQt6与MatPlotlib实现简易绘图小程序

Part5代码部分:

1按钮绑定

self.o = QPushButton("选择文件")
self.o.clicked.connect(self.choose_file)      
self.textEdit = QLineEdit()
self.b = QPushButton("绘图")
self.b.clicked.connect(self.drawer)  
self.save = QPushButton("保存图像")
self.save.clicked.connect(self.save_fig)

2选择文件

def choose_file(self): 
    self.filename, filetype = PyQt6.QtWidgets.QFileDialog.getOpenFileName(None, "选择文件",os.getcwd(),"All Files(*);;Text Files(*.txt)")
    self.textEdit.setText(self.filename)
    self.path_to_df('60')
    print(self.df)

3保存文件

def save_fig(self):
    file_dialog = PyQt6.QtWidgets.QFileDialog()
    file_name, _ = file_dialog.getSaveFileName(self, "保存图像", "", "Images (*.png *.jpg)")
    if file_name:
        self.fig.savefig(file_name,dpi = 300,  bbox_inches='tight')

4检查canvas是否存在

if hasattr(self, 'canvas'):
    self.layout.removeWidget(self.canvas)
    self.canvas.close()

self.canvas = FigureCanvas(self.fig)
self.layout.addWidget(self.canvas)
文章源自菜鸟学院-https://www.cainiaoxueyuan.com/ymba/44856.html
  • 本站内容整理自互联网,仅提供信息存储空间服务,以方便学习之用。如对文章、图片、字体等版权有疑问,请在下方留言,管理员看到后,将第一时间进行处理。
  • 转载请务必保留本文链接:https://www.cainiaoxueyuan.com/ymba/44856.html

Comment

匿名网友 填写信息

:?: :razz: :sad: :evil: :!: :smile: :oops: :grin: :eek: :shock: :???: :cool: :lol: :mad: :twisted: :roll: :wink: :idea: :arrow: :neutral: :cry: :mrgreen:

确定