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程序的循环的运行效率的原因
Apr 01 Python
python使用SMTP发送qq或sina邮件
Oct 21 Python
python多进程中的内存复制(实例讲解)
Jan 05 Python
python合并同类型excel表格的方法
Apr 01 Python
Python中itertools的用法详解
Feb 07 Python
PyQt5中向单元格添加控件的方法示例
Mar 24 Python
Python通过Pillow实现图片对比
Apr 29 Python
keras .h5转移动端的.tflite文件实现方式
May 25 Python
Python实现自动签到脚本的示例代码
Aug 19 Python
容易被忽略的Python内置类型
Sep 03 Python
Python 多线程之threading 模块的使用
Apr 14 Python
Pygame Event事件模块的详细示例
Nov 17 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操作excel文件 基于phpexcel
2010/07/02 PHP
PHP strip_tags保留多个HTML标签的方法
2016/05/22 PHP
php 自定义函数实现将数据 以excel 表格形式导出示例
2019/11/13 PHP
让textarea控件的滚动条怎是位与最下方
2007/04/20 Javascript
腾讯UED 漂亮的提示信息效果代码
2011/09/12 Javascript
jQuery Mobile的loading对话框显示/隐藏方法分享
2013/11/26 Javascript
使用jquery实现放大镜效果
2014/09/02 Javascript
Node.js实现批量去除BOM文件头
2014/12/20 Javascript
jquery mobile 实现自定义confirm确认框效果的简单实例
2016/06/17 Javascript
Javascript打印局部页面实例
2016/06/21 Javascript
jQuery 移动端拖拽(模块化开发,触摸事件,webpack)
2016/10/28 Javascript
vue自定义指令实现v-tap插件
2016/11/03 Javascript
移动端日期插件Mobiscroll.js使用详解
2016/12/19 Javascript
webpack学习--webpack经典7分钟入门教程
2017/06/28 Javascript
关于webpack代码拆分的解析
2017/07/20 Javascript
JavaScript 日期时间选择器一些小结
2018/04/02 Javascript
详解ES6 CLASS在微信小程序中的应用实例
2020/04/24 Javascript
antd配置config-overrides.js文件的操作
2020/10/31 Javascript
Python 实现随机数详解及实例代码
2017/04/15 Python
Python实现针对中文排序的方法
2017/05/09 Python
python装饰器-限制函数调用次数的方法(10s调用一次)
2018/04/21 Python
完美解决Python 2.7不能正常使用pip install的问题
2018/06/12 Python
windows下python 3.6.4安装配置图文教程
2018/08/21 Python
python logging模块书写日志以及日志分割详解
2019/07/22 Python
python numpy存取文件的方式
2020/04/01 Python
python打印n位数“水仙花数”(实例代码)
2019/12/25 Python
Django中ORM的基本使用教程
2020/12/22 Python
详解使用双缓存解决Canvas clearRect引起的闪屏问题
2019/04/29 HTML / CSS
如何在Canvas上的图形/图像绑定事件监听的实现
2020/09/16 HTML / CSS
娱乐地球:Entertainment Earth
2020/01/08 全球购物
电脑专业个人求职信范文
2014/02/04 职场文书
共产党员公开承诺书范文
2014/03/28 职场文书
2014党员整改措施思想汇报
2014/10/07 职场文书
考察邀请函范文
2015/01/31 职场文书
西安事变观后感
2015/06/12 职场文书
小学三年级语文教学反思
2016/03/03 职场文书