Python Matplotlib 修改窗口图标:基于 PyQt5 后端的两种实现

林舟
林舟
发布时间:2026-10-14 | 3人浏览过
原创

本文介绍如何在 Python 中使用 Matplotlib 修改绘图窗口的默认图标。针对 PyQt5 后端,通过 FigureManagerQT 类调用 setWindowIcon 方法实现。文中提供了两种等价代码路径:通过 figure.canvas.manager 或 plt.get_current_fig_manager() 获取管理器实例并设置自定义图标文件路径,帮助开发者自定义界面视觉元素。

Matplotlib 绘制的窗口默认显示 matplotlib 的标志。若需自定义该图标,可通过特定后端接口进行修改。

本文以 PyQt5 为后端环境,通过查阅 matplotlib.backends.backend_qt5 模块源码来解析实现原理。

原理分析

源码显示,窗口图标功能由 FigureManagerQT 类定义,默认加载 mpl-data\images\matplotlib.svg 作为图标。FigureManagerQT 继承自 FigureManagerBase,后者作为容器隔离 Matplotlib 图像与后端窗口实现,并自动适配所选后端。因此,只需获取当前图像的 FigureManagerQT 实例(即图像管理器),并调用其 setWindowIcon 方法即可更改图标。获取该实例存在两种等价写法,对应两种代码实现方式,二者通过 matplotlib.pyplot.get_current_fig_manager() 源码验证为等效操作。

实现代码


import matplotlib.pyplot as plt
from PyQt5 import QtGui

plt.plot([1,2])
# 构建图标
PATH_TO_ICON = r"c:\quit.png"
new_icon = QtGui.QIcon(PATH_TO_ICON)
# 方法一:使用figure.canvas.manager获取当前图像的`FigureManagerQT`类实例
fig =plt.gcf()
fig.canvas.manager.window.setWindowIcon(QtGui.QIcon(new_icon))

# 方法二:使用plt.get_current_fig_manager()获取当前图像的`FigureManagerQT`类实例
plt.get_current_fig_manager().window.setWindowIcon(new_icon)
plt.show()

Matplotlib 源码参考


class FigureManagerQT(FigureManagerBase):
  """
  Attributes
  ----------
  canvas : `FigureCanvas`
    The FigureCanvas instance
  num : int or str
    The Figure number
  toolbar : qt.QToolBar
    The qt.QToolBar
  window : qt.QMainWindow
    The qt.QMainWindow
  """

  def __init__(self, canvas, num):
    FigureManagerBase.__init__(self, canvas, num)
    self.window = MainWindow()
    self.window.closing.connect(canvas.close_event)
    self.window.closing.connect(self._widgetclosed)

    self.window.setWindowTitle("Figure %d" % num)
    image = str(cbook._get_data_path('images/matplotlib.svg'))
    self.window.setWindowIcon(QtGui.QIcon(image))

def get_current_fig_manager():
  return gcf().canvas.manager

至此,关于 Matplotlib 修改窗口图标的方法介绍完毕。如需了解更多相关内容,可搜索本站历史文章或继续浏览后续教程,感谢支持。

本站声明

本文内容仅供参考,不代表本站观点。转载或引用请注明出处。如发现内容问题,请通过联系我们页面反馈。

Python 相关产品和应用

全部下载

专题列表