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

2023年 7月 11日 47.5k 0

Part1开头

前几天转发了当气象绘图碰上PyQt5

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

Part2今天任务

今天主要任务就是复刻一个PyQt6绘图程序。主要功能是选择文件,把选择的文件在一个LineEdit中显示出来,这是一个特定的时间序列数据,把这个序列求平均,计算均方差,标准差,把平均值、均方差、标准差绘到一张图上。

一个WidGet上,填加按钮(QPushButton)、编辑框、和FigureCanvas,FigureCanvas做为Matplotlib的容器,绘图部分都是在Matplotlib中实现,最后把Figure()给回FigureCanvas,通过LayoutaddWidget把那个容器当一个组件填加进来进行展示。绘图过程都是通过MatPlotlib实现,保存也是通过fig.save实现。整体就是这么一个思路。

Part3出错

绘图是原来已有的代码改的,需要适配PyQt6。另外addWidget执行一次没问题,画完第一张图,再画第二张,会把原来的绘图区一分为二,再画一次分三份。找到原因后,看有没有Canvas这个组件,有就删除,没有就正常执行。

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)

相关文章

JavaScript2024新功能:Object.groupBy、正则表达式v标志
PHP trim 函数对多字节字符的使用和限制
新函数 json_validate() 、randomizer 类扩展…20 个PHP 8.3 新特性全面解析
使用HTMX为WordPress增效:如何在不使用复杂框架的情况下增强平台功能
为React 19做准备:WordPress 6.6用户指南
如何删除WordPress中的所有评论

发布评论