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和shell实现的校验IP地址合法性脚本分享
Oct 23 Python
详解Python当中的字符串和编码
Apr 25 Python
介绍Python中的文档测试模块
Apr 28 Python
Python基于smtplib实现异步发送邮件服务
May 28 Python
浅析Python中signal包的使用
Nov 13 Python
windows 下python+numpy安装实用教程
Dec 23 Python
python traceback捕获并打印异常的方法
Aug 31 Python
python语言基本语句用法总结
Jun 11 Python
使用python进行广告点击率的预测的实现
Jul 04 Python
django框架cookie和session用法实例详解
Dec 10 Python
Django Haystack 全文检索与关键词高亮的实现
Feb 17 Python
python 爬取京东指定商品评论并进行情感分析
May 27 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
BBS(php & mysql)完整版(七)
2006/10/09 PHP
Codeigniter上传图片出现“You did not select a file to upload”错误解决办法
2014/06/12 PHP
对PHP新手的一些建议(PHP学习经验总结)
2014/08/20 PHP
支持中文的PHP按字符串长度分割成数组代码
2015/05/17 PHP
javascript学习笔记(七) js函数介绍
2012/06/19 Javascript
js 程序执行与顺序实现详解
2013/05/13 Javascript
JavaScript中document.forms[0]与getElementByName区别
2015/01/21 Javascript
jquery取消事件冒泡的三种方法(推荐)
2016/05/28 Javascript
Angular.js中$apply()和$digest()的深入理解
2016/10/13 Javascript
node.js文件上传处理示例
2016/10/27 Javascript
关于BootStrap modal 在IOS9中不能弹出的解决方法(IOS 9 bootstrap modal ios 9 noticework)
2016/12/14 Javascript
JavaScript下拉菜单功能实例代码
2017/03/01 Javascript
Express之get,pos请求参数的获取
2017/05/02 Javascript
EasyUI的TreeGrid的过滤功能的解决思路
2017/08/08 Javascript
ionic使用angularjs表单验证(模板验证)
2018/12/12 Javascript
js中null与空字符串""的区别讲解
2019/01/17 Javascript
layui 对弹窗 form表单赋值的实现方法
2019/09/04 Javascript
详解如何在Vue项目中发送jsonp请求
2019/10/25 Javascript
[54:58]完美世界DOTA2联赛PWL S2 LBZS vs Rebirth 第一场 11.25
2020/11/25 DOTA
详解Python的Django框架中的通用视图
2015/05/04 Python
Python 自动刷博客浏览量实例代码
2017/06/14 Python
Python cookbook(数据结构与算法)找出序列中出现次数最多的元素算法示例
2018/03/15 Python
Pycharm新建模板默认添加个人信息的实例
2019/07/15 Python
Python变量作用域LEGB用法解析
2020/02/04 Python
cookies应对python反爬虫知识点详解
2020/11/25 Python
毕业生优秀推荐信
2013/11/26 职场文书
日语专业个人的求职信
2013/12/03 职场文书
个人对照检查材料
2014/02/12 职场文书
2014普法依法治理工作总结
2014/12/18 职场文书
创先争优承诺书
2015/01/20 职场文书
酒店保洁员岗位职责
2015/02/26 职场文书
建筑质检员岗位职责
2015/04/08 职场文书
虎兄虎弟观后感
2015/06/12 职场文书
Redis集群新增、删除节点以及动态增加内存的方法
2021/09/04 Redis
Javascript使用integrity属性进行安全验证
2021/11/07 Javascript
Win11如何设置右键单击显示所有选项?Win11右键单击显示所有选项设置教程
2022/04/08 数码科技