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

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

本文介绍如何在 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 相关产品和应用

全部下载
Selenium

Selenium

4.51.0 · Windows

用于浏览器自动化和 Web 测试的 Python 工具。

scikit-learn

scikit-learn

1.9.1 · Windows

常用 Python 机器学习算法与模型评估工具库。

Black

Black

26.10.1 · Windows

强调一致性的 Python 自动代码格式化工具。

Ruff

Ruff

0.17.1 · macOS

由 Rust 编写的高速 Python 代码检查和格式化工具。

pytest

pytest

9.1.1 · Windows

简洁而强大的 Python 自动化测试框架。

FastAPI

FastAPI

0.146.0 · Windows

高性能 Python API 框架,支持类型提示和自动接口文档。

Flask

Flask

3.1.3 · Windows

轻量灵活的 Python Web 应用框架。

Django

Django

6.1.2 · Windows

成熟的 Python Web 框架,适合构建内容站点和业务系统。

Spyder

Spyder

6.1.7 · Windows

面向科学计算与数据分析的 Python 集成开发环境。

SciPy

SciPy

1.18.1 · Windows

面向科学、工程和技术计算的 Python 算法库。