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 相关文章推荐
在主机商的共享服务器上部署Django站点的方法
Jul 22 Python
在Django的视图(View)外使用Session的方法
Jul 23 Python
读写json中文ASCII乱码问题的解决方法
Nov 05 Python
Python使用文件锁实现进程间同步功能【基于fcntl模块】
Oct 16 Python
浅谈用Python实现一个大数据搜索引擎
Nov 28 Python
Python数据结构与算法之完全树与最小堆实例
Dec 13 Python
基于Python中numpy数组的合并实例讲解
Apr 04 Python
在django中,关于session的通用设置方法
Aug 06 Python
django实现更改数据库某个字段以及字段段内数据
Mar 31 Python
Python机器学习应用之基于线性判别模型的分类篇详解
Jan 18 Python
Python selenium绕过webdriver监测执行javascript
Apr 12 Python
使用Python开发贪吃蛇游戏 SnakeGame
Apr 30 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
Windows下的PHP安装文件线程安全和非线程安全的区别
2014/04/23 PHP
php生成过去100年下拉列表的方法
2015/07/20 PHP
php生成curl命令行的方法
2015/12/14 PHP
JavaScript触发器详解
2007/03/10 Javascript
js实现简单的星级选择器提交效果适用于评论等
2013/10/18 Javascript
jQuery中each()方法用法实例
2014/12/27 Javascript
jquery性能优化高级技巧
2015/08/24 Javascript
基于JavaScript的操作系统你听说过吗?
2016/01/28 Javascript
分享javascript实现的冒泡排序代码并优化
2016/06/05 Javascript
动态生成的DOM不会触发onclick事件的原因及解决方法
2016/08/06 Javascript
微信小程序 支付后台java实现实例
2017/05/09 Javascript
js实现页面多个日期时间倒计时效果
2019/06/20 Javascript
vue 集成jTopo 处理方法
2019/08/07 Javascript
layui按条件隐藏表格列的实例
2019/09/19 Javascript
pyside写ui界面入门示例
2014/01/22 Python
使用Python的Zato发送AMQP消息的教程
2015/04/16 Python
python实现淘宝秒杀聚划算抢购自动提醒源码
2020/06/23 Python
Python sorted函数详解(高级篇)
2018/09/18 Python
Python3批量生成带logo的二维码方法
2019/06/24 Python
Python全栈之列表数据类型详解
2019/10/01 Python
Python中six模块基础用法
2019/12/08 Python
解决TensorFlow模型恢复报错的问题
2020/02/06 Python
详解django中Template语言
2020/02/22 Python
pycharm激活码快速激活及使用步骤
2020/03/12 Python
python如何对链表操作
2020/10/10 Python
为世界各地的女性设计和生产时尚服装:ROMWE
2016/09/17 全球购物
土木工程个人自荐信范文
2013/11/30 职场文书
入学申请自荐信范文
2014/02/26 职场文书
安全责任协议书
2014/04/21 职场文书
银行求职信怎么写
2014/05/26 职场文书
环境保护与污染治理求职信
2014/07/16 职场文书
2014年学校食堂工作总结
2014/11/25 职场文书
鸟的天堂导游词
2015/01/31 职场文书
初中美术教学反思
2016/02/17 职场文书
《正面管教》读后有感:和善而坚定的旅程
2019/12/19 职场文书
Python 的演示平台支持 WSGI 接口的应用
2022/04/20 Python