解决PyQt5中matplotlib画图不刷新的问题

在使用PyQt5结合matplotlib进行GUI项目开发时,遇到画图功能无法正常实时更新的问题。本文分享了解决方案,即在画图函数后添加self.fig.canvas.draw_idle()以实现画布的即时刷新。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

本人最近在做一个GUI项目时,需要用到matplotlib画图,写完代码运行时,发现所需要画图功能不能正常使用,在触发画图事件后,画布未更新,需要放大界面才能更新(奇葩吧)。经过资料查阅,发现需要画图函数后面添加self.fig.canvas.draw_idle()。
原文链接:解决PyQt5中使用柱状图和饼状图刷新问题

PyQt5是一个流行的Python GUI开发框架,而matplotlib是一个功能强大的绘库,可以创建各种类型的形,包括折线、散点、条形等。下面是使用PyQt5matplotlib绘制形的简单步骤: 1. 安装必要的库:PyQt5matplotlib。 2. 导入必要的模块:`matplotlib.pyplot`和`matplotlib.backends.backend_qt5agg`。 3. 创建`QWidget`对象作为主窗口。 4. 在主窗口中创建一个`QVBoxLayout`对象,用于管理所有子控件的布局。 5. 创建一个`QMainWindow`对象,并将它设置为主窗口的子控件。 6. 创建一个`FigureCanvasQTAgg`对象,并将它添加到`QMainWindow`对象中。 7. 使用`matplotlib.pyplot`模块中的函数创建形,并将其绘制在`FigureCanvasQTAgg`对象中。 8. 显示主窗口。 以下是一个简单的例子,演示如何使用PyQt5matplotlib绘制一个简单的折线: ```python import sys import matplotlib.pyplot as plt from matplotlib.backends.backend_qt5agg import FigureCanvasQTAgg as FigureCanvas from PyQt5.QtWidgets import QMainWindow, QApplication, QWidget, QVBoxLayout class MyMainWindow(QMainWindow): def __init__(self): super().__init__() # 创建FigureCanvasQTAgg对象 self.canvas = FigureCanvas(plt.Figure()) # 绘制形 ax = self.canvas.figure.add_subplot(111) ax.plot([1, 2, 3, 4], [1, 4, 2, 3]) # 创建QWidget对象 widget = QWidget() layout = QVBoxLayout(widget) layout.addWidget(self.canvas) # 设置主窗口 self.setCentralWidget(widget) if __name__ == '__main__': app = QApplication(sys.argv) window = MyMainWindow() window.show() sys.exit(app.exec_()) ```
评论 7
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值