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多线程抓取代理服务器IP地址的示例
Nov 09 Python
Python实现合并同一个文件夹下所有PDF文件的方法示例
Apr 28 Python
Python实现的堆排序算法示例
Apr 29 Python
python中的不可变数据类型与可变数据类型详解
Sep 16 Python
python ChainMap的使用和说明详解
Jun 11 Python
解决Python列表字符不区分大小写的问题
Dec 19 Python
Pandas时间序列:重采样及频率转换方式
Dec 26 Python
基于python 取余问题(%)详解
Jun 03 Python
完美解决ARIMA模型中plot_acf画不出图的问题
Jun 04 Python
Python带参数的装饰器运行原理解析
Jun 09 Python
详解Django中views数据查询使用locals()函数进行优化
Aug 24 Python
pytorch中的model.eval()和BN层的使用
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
第八节--访问方式
2006/11/16 PHP
不错的PHP学习之php4与php5之间会穿梭一点点感悟
2007/05/03 PHP
PHP统计目录下的文件总数及代码行数(去除注释及空行)
2011/01/17 PHP
php array_map()数组函数使用说明
2011/07/12 PHP
php使用MySQL保存session会话的方法
2015/06/26 PHP
Zend Framework使用Zend_Loader组件动态加载文件和类用法详解
2016/12/09 PHP
PHP实现登录验证码校验功能
2018/05/17 PHP
javascript 伪数组实现方法
2010/10/11 Javascript
JS 精确统计网站访问量的实例代码
2013/07/05 Javascript
Js中获取frames中的元素示例代码
2013/07/30 Javascript
jquery动态分页效果堪比时光网
2014/09/25 Javascript
javascript实现图片延迟加载方法汇总(三种方法)
2015/08/27 Javascript
常用的JQuery函数及功能小结
2016/03/24 Javascript
JSONP原理及简单实现
2016/06/08 Javascript
jQuery操作iframe中js函数的方法小结
2016/07/06 Javascript
基于js实现的限制文本框只可以输入数字
2016/12/05 Javascript
jQuery中animate()的使用方法及解决$(”body“).animate({“scrollTop”:top})不被Firefox支持的问题
2017/04/04 jQuery
vue.js 微信支付前端代码分享
2018/02/10 Javascript
jQuery实现的简单获取索引功能示例
2018/06/04 jQuery
详解如何在Vue里建立长按指令
2018/08/20 Javascript
JavaScript面试技巧之数组的一些不low操作
2019/03/22 Javascript
vue使用transition组件动画效果的实例代码
2021/01/28 Vue.js
Python 字符串中的字符倒转
2008/09/06 Python
简单谈谈Python中的反转字符串问题
2016/10/24 Python
Opencv-Python图像透视变换cv2.warpPerspective的示例
2019/04/11 Python
python函数与方法的区别总结
2019/06/23 Python
Python中SQLite如何使用
2020/05/27 Python
使用keras实现非线性回归(两种加激活函数的方式)
2020/07/05 Python
python爬虫搭配起Bilibili唧唧的流程分析
2020/12/01 Python
python matplotlib工具栏源码探析三之添加、删除自定义工具项的案例详解
2021/02/25 Python
总经理人事任命书
2014/06/05 职场文书
2015年财务部工作总结
2015/04/10 职场文书
经典爱情感言
2015/08/03 职场文书
MySQL Threads_running飙升与慢查询的相关问题解决
2021/05/08 MySQL
实战Python爬虫爬取酷我音乐
2022/04/11 Python
Nginx 安装SSL证书完成HTTPS部署
2022/04/28 Servers