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实现文件名批量替换和内容替换
Mar 20 Python
用 Python 爬了爬自己的微信朋友(实例讲解)
Aug 25 Python
python+pyqt实现12306图片验证效果
Oct 25 Python
Python解决八皇后问题示例
Apr 22 Python
Python高级特性切片(Slice)操作详解
Sep 27 Python
Python中的枚举类型示例介绍
Jan 09 Python
Python multiprocess pool模块报错pickling error问题解决方法分析
Mar 20 Python
Python3.5基础之变量、数据结构、条件和循环语句、break与continue语句实例详解
Apr 26 Python
python编写猜数字小游戏
Oct 06 Python
python随机生成大小写字母数字混合密码(仅20行代码)
Feb 01 Python
python数据分析:关键字提取方式
Feb 24 Python
python基于socket模拟实现ssh远程执行命令
Dec 05 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 session_start()关于Cannot send session cache limiter - headers already sent错误解决方法
2009/11/27 PHP
array_multisort实现PHP多维数组排序示例讲解
2011/01/04 PHP
php匹配字符中链接地址的方法
2014/12/22 PHP
PHP7新功能总结
2019/04/14 PHP
一段效率很高的for循环语句使用方法
2007/08/13 Javascript
jquery日历控件实现方法分享
2014/03/07 Javascript
javascript面向对象快速入门实例
2015/01/13 Javascript
jQuery+easyui中的combobox实现下拉框特效
2015/02/27 Javascript
jquery控制页面部分刷新的方法
2015/06/24 Javascript
使用impress.js制作幻灯片
2015/09/09 Javascript
JS实现IE状态栏文字缩放效果代码
2015/10/24 Javascript
适用于javascript开发者的Processing.js入门教程
2016/02/24 Javascript
Bootstrap开关(switch)控件学习笔记分享
2016/05/30 Javascript
全面了解函数声明与函数表达式、变量提升
2016/08/09 Javascript
JavaScript基于DOM操作实现简单的数学运算功能示例
2017/01/16 Javascript
Vue实现双向数据绑定
2017/05/03 Javascript
jQuery实现节点的追加、替换、删除、复制功能示例
2017/07/11 jQuery
vue生命周期和react生命周期对比【推荐】
2018/09/19 Javascript
微信小程序授权登录解决方案的代码实例(含未通过授权解决方案)
2019/05/10 Javascript
layer.alert回调函数执行关闭弹窗的实例
2019/09/11 Javascript
JavaScript中Object、map、weakmap的区别分析
2020/12/15 Javascript
在Python的Flask框架中使用日期和时间的教程
2015/04/21 Python
Python保存MongoDB上的文件到本地的方法
2016/03/16 Python
在Pycharm中将pyinstaller加入External Tools的方法
2019/01/16 Python
深度辨析Python的eval()与exec()的方法
2019/03/26 Python
Pytoch之torchvision.transforms图像变换实例
2019/12/30 Python
什么是Python包的循环导入
2020/09/08 Python
python爬虫看看虎牙女主播中谁最“顶”步骤详解
2020/12/01 Python
HTML+CSS+JavaScript实现图片3D展览的示例代码
2020/10/12 HTML / CSS
美国皮靴公司自1863年:The Frye Company
2016/11/30 全球购物
JD Sports丹麦:英国领先的运动时尚零售商
2020/11/24 全球购物
自荐信的禁忌和要点
2013/10/15 职场文书
幼儿园小班家长寄语
2014/04/02 职场文书
受资助学生感谢信
2015/01/21 职场文书
导游词之湖州-太湖
2019/10/11 职场文书
800字作文之大雪
2019/12/04 职场文书