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挑选文件夹里宽大于300图片的方法
Mar 05 Python
用Python抢过年的火车票附源码
Dec 07 Python
在CMD命令行中运行python脚本的方法
May 12 Python
python实现字符串加密 生成唯一固定长度字符串
Mar 22 Python
Python中asyncio模块的深入讲解
Jun 10 Python
python三大神器之fabric使用教程
Jun 10 Python
详解10个可以快速用Python进行数据分析的小技巧
Jun 24 Python
PyCharm安装Markdown插件的两种方法
Jun 24 Python
python文件选择对话框的操作方法
Jun 27 Python
Pandas缺失值2种处理方式代码实例
Jun 13 Python
如何用python绘制雷达图
Apr 24 Python
python微信智能AI机器人实现多种支付方式
Apr 12 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
用phpmyadmin更改mysql5.0登录密码
2008/03/25 PHP
FleaPHP的安全设置方法
2008/09/15 PHP
php数组函数序列之end() - 移动数组内部指针到最后一个元素,并返回该元素的值
2011/10/31 PHP
关于JSON以及JSON在PHP中的应用技巧
2013/11/27 PHP
PHP7新增运算符用法实例分析
2016/09/26 PHP
php curl 模拟登录并获取数据实例详解
2016/12/22 PHP
Laravel实现autoload方法详解
2017/05/07 PHP
php-fpm开启状态统计的方法详解
2017/06/23 PHP
thinkPHP5分页功能实现方法分析
2017/10/25 PHP
Thinkphp5行为使用方法汇总
2017/12/21 PHP
Yii框架安装简明教程
2020/05/15 PHP
基于jquery的从一个页面跳转到另一个页面的指定位置的实现代码(带平滑移动的效果)
2011/05/24 Javascript
JS解决ie6下png透明的方法实例
2013/08/02 Javascript
javascript实现tab切换特效
2015/11/12 Javascript
解决webpack打包速度慢的解决办法汇总
2017/07/06 Javascript
vue2.0移除或更改的一些东西(移除index key)
2017/08/28 Javascript
js中getBoundingClientRect的作用及兼容方案详解
2018/02/01 Javascript
VUE 3D轮播图封装实现方法
2018/07/03 Javascript
Vue自定义指令上报Google Analytics事件统计的方法
2019/02/25 Javascript
浅谈实现在线预览PDF的几种解决办法
2020/08/10 Javascript
python实现多线程采集的2个代码例子
2014/07/07 Python
Python字符串和文件操作常用函数分析
2015/04/08 Python
Python中flatten( )函数及函数用法详解
2018/11/02 Python
Python 单元测试(unittest)的使用小结
2018/11/14 Python
python3学生名片管理v2.0版
2018/11/29 Python
对python过滤器和lambda函数的用法详解
2019/01/21 Python
python 使用turtule绘制递归图形(螺旋、二叉树、谢尔宾斯基三角形)
2019/05/30 Python
浅谈PyTorch的可重复性问题(如何使实验结果可复现)
2020/02/20 Python
FILA斐乐中国官方商城:意大利运动品牌
2017/01/25 全球购物
世界上最大的二手相机店:KEN
2017/05/17 全球购物
个人授权委托书范本
2014/04/03 职场文书
合作协议书范本
2014/04/17 职场文书
国企干部对照检查材料
2014/08/22 职场文书
学雷锋活动简报
2015/07/20 职场文书
三好学生主要事迹材料
2015/11/03 职场文书
CSS3实现的水平标题菜单
2021/04/14 HTML / CSS