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


Posted in Python onFebruary 03, 2021

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

到此这篇关于matplotlib更改窗口图标的方法示例的文章就介绍到这了,更多相关matplotlib更改窗口图标内容请搜索三水点靠木以前的文章或继续浏览下面的相关文章希望大家以后多多支持三水点靠木!

Python 相关文章推荐
Python多线程编程(三):threading.Thread类的重要函数和方法
Apr 05 Python
详解python实现识别手写MNIST数字集的程序
Aug 03 Python
python实现n个数中选出m个数的方法
Nov 13 Python
浅析Python与Mongodb数据库之间的操作方法
Jul 01 Python
python进阶之自定义可迭代的类
Aug 20 Python
Python算法中的时间复杂度问题
Nov 19 Python
python科学计算之narray对象用法
Nov 25 Python
python pycharm最新版本激活码(永久有效)附python安装教程
Sep 18 Python
keras得到每层的系数方式
Jun 15 Python
Python Web项目Cherrypy使用方法镜像
Nov 05 Python
python 爬虫网页登陆的简单实现
Nov 30 Python
教你怎么用Python实现多路径迷宫
Apr 29 Python
python中添加模块导入路径的方法
Feb 03 #Python
浅谈matplotlib默认字体设置探索
Feb 03 #Python
python sleep和wait对比总结
Feb 03 #Python
Python实现简单猜数字游戏
Feb 03 #Python
python 实现图片裁剪小工具
Feb 02 #Python
python向xls写入数据(包括合并,边框,对齐,列宽)
Feb 02 #Python
Python datetime模块的使用示例
Feb 02 #Python
You might like
香妃
2021/03/03 冲泡冲煮
一个PHP并发访问实例代码
2012/09/06 PHP
详解WordPress中用于更新和获取用户选项数据的PHP函数
2016/03/08 PHP
PHP输出多个元素的排列或组合的方法
2017/03/14 PHP
php微信公众号开发之答题连闯三关
2018/10/20 PHP
一个无限级XML绑定跨框架菜单(For IE)
2007/01/27 Javascript
Javascript this指针
2009/07/30 Javascript
js使浏览器窗口最大化实现代码(适用于IE)
2013/08/07 Javascript
JS禁用浏览器退格键实现思路及代码
2013/10/29 Javascript
jQuery学习总结之jQuery事件
2014/06/30 Javascript
JavaScript中获取高度和宽度函数总结
2014/10/08 Javascript
JavaScript程序设计之JS调试
2015/12/09 Javascript
前端学习笔记style,currentStyle,getComputedStyle的用法与区别
2016/05/28 Javascript
javascript 开发之百度地图使用到的js函数整理
2017/05/19 Javascript
在Vue中使用axios请求拦截的实现方法
2018/10/25 Javascript
详解React项目如何修改打包地址(编译输出文件地址)
2019/03/21 Javascript
ES6 Promise对象的含义和基本用法分析
2019/06/14 Javascript
关于Vue中axios的封装实例详解
2019/10/20 Javascript
vue组件库的在线主题编辑器的实现思路
2020/04/03 Javascript
解决Can't find variable: SockJS vue项目的问题
2020/09/22 Javascript
[01:20]DOTA2上海特级锦标赛现场采访:谁的ID最受青睐
2016/03/25 DOTA
在CentOS上配置Nginx+Gunicorn+Python+Flask环境的教程
2016/06/07 Python
python画图的函数用法以及技巧
2019/06/28 Python
python 修改本地网络配置的方法
2019/08/14 Python
python取均匀不重复的随机数方式
2019/11/27 Python
Toppik顶丰增发纤维官网:解决头发稀疏
2017/12/30 全球购物
世界上最好的野生海鲜和有机食品:Vital Choice
2020/01/16 全球购物
限量版运动鞋和街头服饰:TheDrop
2020/09/06 全球购物
校园新闻广播稿
2014/01/10 职场文书
十岁生日同学答谢词
2014/01/19 职场文书
煤矿安全生产标语
2014/06/06 职场文书
物业消防安全责任书
2014/07/23 职场文书
企业公益活动策划方案
2014/08/24 职场文书
三年级学生评语大全
2014/12/26 职场文书
学校禁毒宣传活动总结
2015/05/08 职场文书
2016最新离婚协议书范本及程序
2016/03/18 职场文书