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 多线程应用介绍
Dec 19 Python
菜鸟使用python实现正则检测密码合法性
Jan 05 Python
Python正则表达式分组概念与用法详解
Jun 24 Python
python正则表达式爬取猫眼电影top100
Feb 24 Python
Python数据预处理之数据规范化(归一化)示例
Jan 08 Python
python实现学员管理系统
Feb 26 Python
浅谈Python爬虫基本套路
Mar 25 Python
Pandas分组与排序的实现
Jul 23 Python
python 输出列表元素实例(以空格/逗号为分隔符)
Dec 25 Python
pandas 强制类型转换 df.astype实例
Apr 09 Python
Python unittest生成测试报告过程解析
Sep 08 Python
Python运算符+与+=的方法实例
Feb 18 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/01 无线电
Codeigniter校验ip地址的方法
2015/03/21 PHP
PHP读取文件内容的五种方式
2015/12/28 PHP
JavaScript 异步调用框架 (Part 3 - 代码实现)
2009/08/04 Javascript
js removeChild 障眼法 可能出现的错误
2009/10/06 Javascript
javascript void(0)的妙用
2009/10/21 Javascript
Date对象格式化函数代码
2010/07/17 Javascript
Javascript延迟执行实现方法(setTimeout)
2010/12/30 Javascript
对象无length属性时IE6/IE7中无法将其转换成伪数组(ArrayLike)
2011/07/31 Javascript
EASYUI TREEGRID异步加载数据实现方法
2012/08/22 Javascript
javascript实现数组内值索引随机化及创建随机数组的方法
2015/08/10 Javascript
基于jquery实现的鼠标悬停提示案例
2016/12/11 Javascript
javascript中闭包概念与用法深入理解
2016/12/15 Javascript
微信小程序实战之登录页面制作(5)
2020/03/30 Javascript
vue项目中v-model父子组件通信的实现详解
2017/12/10 Javascript
vue项目中axios使用详解
2018/02/07 Javascript
JavaScript两种计时器的实例讲解
2019/01/31 Javascript
如何基于JavaScript判断图片是否加载完成
2019/12/28 Javascript
vue项目中使用eslint+prettier规范与检查代码的方法
2020/01/16 Javascript
小程序按钮避免多次调用接口和点击方案实现(不用showLoading)
2020/04/15 Javascript
Python的Tornado框架异步编程入门实例
2015/04/24 Python
Django学习教程之静态文件的调用详解
2018/05/08 Python
python随机在一张图像上截取任意大小图片的方法
2019/01/24 Python
python调用虹软2.0第三版的具体使用
2019/02/22 Python
Python3.5基础之NumPy模块的使用图文与实例详解
2019/04/24 Python
python tkinter窗口最大化的实现
2019/07/15 Python
python3 下载网络图片代码实例
2019/08/27 Python
Python Numpy中数据的常用保存与读取方法
2020/04/01 Python
Python实现捕获异常发生的文件和具体行数
2020/04/25 Python
python如何查看网页代码
2020/06/07 Python
简短大学毕业感言
2014/01/18 职场文书
报社实习生自荐信
2014/01/24 职场文书
优秀大学生求职自荐信范文
2014/04/19 职场文书
食品质检员岗位职责
2015/04/08 职场文书
2016教师年度考核评语大全
2015/12/01 职场文书
职场领导同事生日简短祝福语
2019/08/06 职场文书