matplotlib更改窗口图标的方法示例

作者:mighty13 时间:2023-01-15 17:55:30 

matplotlib窗口图标默认是matplotlib的标志,如果想修改怎么改呢?

由于我选择的matplotlib后端是PyQT5,直接查看matplotlib.backends.backend_qt5模块源码。

原理

查看源码可知,窗口图标功能定义在FigureManagerQT类中,设置的默认图标是mpl-data\images\matplotlib.svg。
FigureManagerQT的父类是FigureManagerBase,其功能是作为容器隔离matplotlib图像和后端实现的窗口,并与窗口进行交互,它会自动适配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

来源:https://blog.csdn.net/mighty13/article/details/112600060

标签:matplotlib,窗口图标
0
投稿

猜你喜欢

  • Python修改Excel数据的实例代码

    2021-05-24 12:40:29
  • 详解django.contirb.auth-认证

    2021-12-21 16:48:40
  • 如何在mac下配置python虚拟环境

    2023-06-16 18:09:37
  • Apache部署Django项目图文详解

    2023-12-17 06:51:05
  • FSO中的SubFolders 属性介绍

    2008-01-05 13:57:00
  • 实用301转向到另一域名相应页面的asp代码

    2011-04-18 10:42:00
  • Python深度学习之Keras模型转换成ONNX模型流程详解

    2023-01-02 00:32:44
  • Python纯代码通过神经网络实现线性回归的拟合方式

    2022-07-12 23:54:59
  • vue中的ref和$refs的使用

    2024-05-13 09:08:44
  • Python+OpenCV之图像轮廓详解

    2023-08-10 18:59:42
  • MySQL模糊查询用法大全(正则、通配符、内置函数)

    2024-01-22 13:48:50
  • JavaScript中定义函数的三种方法

    2024-05-09 10:37:04
  • Golang设计模式中抽象工厂模式详细讲解

    2023-08-04 20:46:46
  • 浅析SQL Server 2008企业级新特性

    2008-11-24 17:01:00
  • python实现用于测试网站访问速率的方法

    2023-07-28 19:12:02
  • python爬虫中get和post方法介绍以及cookie作用

    2021-06-20 06:49:00
  • Servermanager启动连接数据库错误如何解决

    2024-01-13 23:46:55
  • python是否适合网页编程详解

    2021-04-19 11:35:47
  • python使用turtle库绘制树

    2022-04-14 09:09:06
  • 五大提高ASP运行效率的技巧

    2007-09-20 13:15:00
  • asp之家 网络编程 m.aspxhome.com