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 lambda和Python def区别分析
Nov 30 Python
Python内置函数dir详解
Apr 14 Python
python topN 取最大的N个数或最小的N个数方法
Jun 04 Python
Python求两个圆的交点坐标或三个圆的交点坐标方法
Nov 07 Python
Python爬取商家联系电话以及各种数据的方法
Nov 10 Python
在Qt5和PyQt5中设置支持高分辨率屏幕自适应的方法
Jun 18 Python
django Admin文档生成器使用详解
Jul 22 Python
django项目用higcharts统计最近七天文章点击量
Aug 17 Python
Python多线程模块Threading用法示例小结
Nov 09 Python
使用Python实现正态分布、正态分布采样
Nov 20 Python
Python pip安装第三方库实现过程解析
Jul 09 Python
解决pytorch 保存模型遇到的问题
Mar 03 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读取MySQL数据代码
2008/06/05 PHP
php empty()与isset()区别的详细介绍
2013/06/17 PHP
怎样使用php与jquery设置和读取cookies
2013/08/08 PHP
PHP中怎样防止SQL注入分析
2014/10/23 PHP
PHP生成各种常见验证码和Ajax验证过程
2016/01/10 PHP
php构造方法中析构方法在继承中的表现
2016/04/12 PHP
jquery与google map api结合使用 控件,监听器
2010/03/04 Javascript
鼠标悬浮停留三秒后自动显示大图js代码
2014/09/09 Javascript
js实现编辑div节点名称的方法
2014/12/17 Javascript
jQuery中height()方法用法实例
2014/12/24 Javascript
JS运动基础框架实例分析
2015/03/03 Javascript
Actionscript与javascript交互实例程序(修改)
2016/09/22 Javascript
基于JavaScript实现瀑布流效果
2017/03/29 Javascript
解决Vue页面固定滚动位置的处理办法
2017/07/13 Javascript
bootstrap fileinput实现文件上传功能
2017/08/23 Javascript
vue中的scope使用详解
2017/10/29 Javascript
如何更好的编写js async函数
2018/05/13 Javascript
javascript创建元素和删除元素实例小结
2019/06/19 Javascript
vue中npm包全局安装和局部安装过程
2019/09/03 Javascript
JS函数本身的作用域实例分析
2020/03/16 Javascript
JS XMLHttpRequest原理与使用方法深入详解
2020/04/30 Javascript
vue+vant实现购物车全选和反选功能
2020/11/17 Vue.js
[03:16]DOTA2完美大师赛小组赛精彩集锦
2017/11/22 DOTA
Python的Flask框架中实现登录用户的个人资料和头像的教程
2015/04/20 Python
在Mac OS上部署Nginx和FastCGI以及Flask框架的教程
2015/05/02 Python
Python3多进程 multiprocessing 模块实例详解
2018/06/11 Python
python三方库之requests的快速上手
2019/03/04 Python
python字典的setdefault的巧妙用法
2019/08/07 Python
Django 用户登陆访问限制实例 @login_required
2020/05/13 Python
CSS3 网页下拉菜单代码解释 中文翻译
2010/02/27 HTML / CSS
萨克斯第五大道的折扣店:Saks Fifth Avenue OFF 5TH
2016/08/25 全球购物
德国网上花店:Valentins
2018/08/15 全球购物
30年同学聚会邀请函
2014/01/25 职场文书
道德大讲堂实施方案
2014/05/14 职场文书
解决hive中导入text文件遇到的坑
2021/04/07 Python
pd.drop_duplicates删除重复行的方法实现
2022/06/16 Python