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将MongoDB里的ObjectId转换为时间戳的方法
Mar 13 Python
Python使用正则匹配实现抓图代码分享
Apr 02 Python
python操作 hbase 数据的方法
Dec 18 Python
python3 模拟登录v2ex实例讲解
Jul 13 Python
详解TensorFlow在windows上安装与简单示例
Mar 05 Python
Python File readlines() 使用方法
Mar 19 Python
python去除扩展名的实例讲解
Apr 23 Python
pandas.dataframe中根据条件获取元素所在的位置方法(索引)
Jun 07 Python
Python递归函数实例讲解
Feb 27 Python
python使用celery实现异步任务执行的例子
Aug 28 Python
django中related_name的用法说明
May 20 Python
Python接口测试文件上传实例解析
May 22 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
使用sockets:从新闻组中获取文章(二)
2006/10/09 PHP
PHP 杂谈《重构-改善既有代码的设计》之五 简化函数调用
2012/05/07 PHP
php读取文件内容至字符串中,同时去除换行、空行、行首行尾空格(Zjmainstay原创)
2012/07/31 PHP
laravel5.1框架model类查询的实现方法
2019/10/08 PHP
复制本贴标题和地址的js代码
2008/07/01 Javascript
javascript EXCEL 操作类代码
2009/07/30 Javascript
javascript下4个跨浏览器必备的函数
2010/03/07 Javascript
web前端开发也需要日志
2010/12/09 Javascript
actionscript与javascript的区别
2011/05/25 Javascript
js 获取元素下面所有li的两种方法
2014/04/14 Javascript
node模块机制与异步处理详解
2016/03/13 Javascript
ionic2自定义cordova插件开发以及使用(Android)
2017/06/19 Javascript
angularJs 表格添加删除修改查询方法
2018/02/27 Javascript
JS实现的base64加密解密操作示例
2018/04/18 Javascript
vue单页缓存方案分析及实现
2018/09/25 Javascript
一些你可能不熟悉的JS知识点总结
2019/03/15 Javascript
JS性能优化实现方法及优点进行
2020/08/30 Javascript
[00:10]DOTA2全国高校联赛速递
2018/05/30 DOTA
Python生成器以及应用实例解析
2018/02/08 Python
详解Python中where()函数的用法
2018/03/27 Python
mac 安装python网络请求包requests方法
2018/06/13 Python
Python机器学习算法库scikit-learn学习之决策树实现方法详解
2019/07/04 Python
python正则表达式实例代码
2020/03/03 Python
python使用QQ邮箱实现自动发送邮件
2020/06/22 Python
Java byte数组操纵方式代码实例解析
2020/07/22 Python
伦敦一家非常流行的时尚精品店:Oxygen Boutique
2017/01/15 全球购物
豪华床上用品 :Jennifer Adams
2019/09/15 全球购物
临床医学应届生求职信
2013/11/06 职场文书
村优秀党员事迹材料
2014/01/15 职场文书
咖啡蛋糕店创业计划书
2014/01/28 职场文书
优秀团支部事迹材料
2014/02/08 职场文书
学生干部学习的自我评价
2014/02/18 职场文书
资金主管岗位职责范本
2014/03/04 职场文书
大学同学会活动方案
2014/08/20 职场文书
奖学金感谢信
2015/01/21 职场文书
销售口号霸气押韵
2015/12/24 职场文书