有些PyQt任务中我们需要将利用 matplotlib
绘制的图绘制到桌面应用中,一般这种情况,接受图的显示需要使用 QLabel
,下文将介绍如何实现这个效果。
效果展示:
该应用很简单,就是点击按钮,然后将利用 matplotlib
绘制的折线图显示到桌面上
实现步骤如下:
- 创建一个画布
fig
- 在画布上创建一个
axes
对象,用于绘图 - 使用
ax
绘制需要的图形 - 创建
FigureCanvas
对象,同时将画布fig
传入 - 获取
pixmap
对象 - 调用
QLabel
的setPixmap()
设置图片背景
以下是一个示例代码,演示如何将 Matplotlib
绘制的图形绘制到 QLabel
上:
def draw(self):
# 创建一个Matplotlib Figure对象
fig = plt.figure()
# 在Figure对象中创建一个Axes对象
ax = fig.add_subplot(111)
# 绘制一条曲线
x = [1, 2, 3, 4, 5]
y = [1, 4, 9, 16, 25]
ax.plot(x, y)
# 创建一个FigureCanvas对象,并将Figure对象传入
canvas = FigureCanvas(fig)
# 获取pixmap对象
pixmap = QPixmap(canvas.grab().toImage())
# 设置背景
self.label.setPixmap(pixmap)
def signal(self):
# 按钮连接绘图槽函数
self.pushButton.clicked.connect(self.draw)
注意导包问题,FigureCanvas
是按照下面方式,不要导错了
from matplotlib.backends.backend_qt5agg import FigureCanvasQTAgg as FigureCanvas