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 peewee 使用经验
Oct 20 Python
Python获取当前函数名称方法实例分享
Jan 18 Python
Python实现PS图像调整之对比度调整功能示例
Jan 26 Python
对python cv2批量灰度图片并保存的实例讲解
Nov 09 Python
python实现名片管理系统项目
Apr 26 Python
Python正则表达式实现简易计算器功能示例
May 07 Python
python3获取url文件大小示例代码
Sep 18 Python
Python selenium 自动化脚本打包成一个exe文件(推荐)
Jan 14 Python
pytorch cuda上tensor的定义 以及减少cpu的操作详解
Jun 23 Python
pytorch中的weight-initilzation用法
Jun 24 Python
python中pdb模块实例用法
Jan 15 Python
Python学习之os包使用教程详解
Mar 21 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
PHP开发框架总结收藏
2008/04/24 PHP
PHP循环函数使用介绍之PHP基础入门教程
2013/09/21 PHP
PHP时间戳 strtotime()使用方法和技巧
2013/10/29 PHP
对比PHP对MySQL的缓冲查询和无缓冲查询
2016/07/01 PHP
javascript onkeydown,onkeyup,onkeypress,onclick,ondblclick
2009/02/04 Javascript
jquery 屏蔽一个区域内的所有元素,禁止输入
2009/10/22 Javascript
Jquery Ajax学习实例 向页面发出请求,返回XML格式数据
2010/03/14 Javascript
Javascript实现仿WebQQ界面的“浮云”兼容 IE7以上版本及FF
2011/04/27 Javascript
轻松搞定js表单验证
2016/10/13 Javascript
使用DeviceOne实现微信小程序功能
2016/12/29 Javascript
Bootstrap导航条鼠标悬停下拉菜单
2017/01/04 Javascript
使用AngularJS编写多选按钮选中时触发指定方法的指令代码详解
2017/07/24 Javascript
JS中async/await实现异步调用的方法
2019/08/28 Javascript
用原生JS实现爱奇艺首页导航栏代码实例
2019/09/19 Javascript
微信小程序实现拨打电话功能的示例代码
2020/06/28 Javascript
微信小程序自定义支持图片的弹窗
2020/12/21 Javascript
[16:43]Heroes19_剃刀(完美)
2014/10/31 DOTA
Python进行数据提取的方法总结
2016/08/22 Python
Python算法之求n个节点不同二叉树个数
2017/10/27 Python
python生成圆形图片的方法
2020/03/25 Python
Python补齐字符串长度的实例
2018/11/15 Python
解决win7操作系统Python3.7.1安装后启动提示缺少.dll文件问题
2019/07/15 Python
Python实现图像去噪方式(中值去噪和均值去噪)
2019/12/18 Python
tensorflow模型继续训练 fineturn实例
2020/01/21 Python
python——全排列数的生成方式
2020/02/26 Python
python装饰器实现对异常代码出现进行自动监控的实现方法
2020/09/15 Python
Python实现Word文档转换Markdown的示例
2020/12/22 Python
Maxpeedingrods美国:高性能汽车零件
2020/02/14 全球购物
JavaScript实现页面动态验证码的实现示例
2021/03/23 Javascript
客户代表自我评价范例
2013/09/24 职场文书
《要下雨了》教学反思
2014/02/17 职场文书
法律系毕业生求职信
2014/05/28 职场文书
初中语文教学研修日志
2015/11/13 职场文书
爱国之歌(8首)
2019/09/29 职场文书
《学会生存》读后感3篇
2019/12/09 职场文书
Tomcat安装使用及部署Web项目的3种方法汇总
2022/08/14 Servers