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中for循环的使用
Apr 14 Python
Python数组遍历的简单实现方法小结
Apr 27 Python
彻底理解Python list切片原理
Oct 27 Python
详解python使用递归、尾递归、循环三种方式实现斐波那契数列
Jan 16 Python
idea创建springMVC框架和配置小文件的教程图解
Sep 18 Python
对python数据切割归并算法的实例讲解
Dec 12 Python
python开头的coding设置方法
Aug 08 Python
Python绘图实现显示中文
Dec 04 Python
pytorch dataloader 取batch_size时候出现bug的解决方式
Feb 20 Python
Python 实现一个简单的web服务器
Jan 03 Python
Python 高级库15 个让新手爱不释手(推荐)
May 15 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
PHP curl 获取响应的状态码的方法
2014/01/13 PHP
php判断手机访问还是电脑访问示例分享
2014/01/20 PHP
php为字符串前后添加指定数量字符的方法
2015/05/04 PHP
PHP输出缓冲控制Output Control系列函数详解
2015/07/02 PHP
js类中获取外部函数名的方法
2007/08/19 Javascript
javascript让setInteval里的函数参数中的this指向特定的对象
2010/01/31 Javascript
JQuery制作的放大效果的popup对话框(未添加任何jquery plugin)分享
2013/04/28 Javascript
js工具方法弹出蒙版
2013/05/08 Javascript
jquery五角星评分插件示例分享
2014/02/21 Javascript
js实现点击图片将图片地址复制到粘贴板的方法
2015/02/16 Javascript
JS仿淘宝实现的简单滑动门效果代码
2015/10/14 Javascript
第六章之辅组类与响应式工具
2016/04/25 Javascript
js+html5实现侧滑页面效果
2017/07/15 Javascript
jQuery实现全选、反选和不选功能
2017/08/16 jQuery
使用Vue.js和Element-UI做一个简单登录页面的实例
2018/02/23 Javascript
微信小程序实现全局搜索代码高亮的示例
2018/03/30 Javascript
vue组件实现进度条效果
2018/06/06 Javascript
细说Vue组件的服务器端渲染的过程
2019/05/30 Javascript
如何在微信小程序中实现Mixins方案
2019/06/20 Javascript
JS中数组实现代码(倒序遍历数组,数组连接字符串)
2019/12/29 Javascript
TypeScript魔法堂之枚举的超实用手册
2020/10/29 Javascript
[51:28]EG vs Mineski 2018国际邀请赛小组赛BO2 第一场 8.16
2018/08/16 DOTA
深入浅析Python字符编码
2015/11/12 Python
python实现解数独程序代码
2017/04/12 Python
利用python计算windows全盘文件md5值的脚本
2019/07/27 Python
pytorch制作自己的LMDB数据操作示例
2019/12/18 Python
Python调用钉钉自定义机器人的实现
2020/01/03 Python
CSS3 优势以及网页设计师如何使用CSS3技术
2009/07/29 HTML / CSS
CSS3 对过渡(transition)进行调速以及延时
2020/10/21 HTML / CSS
HTML5中视频音频的使用详解
2017/07/07 HTML / CSS
params有什么用
2016/03/01 面试题
婚礼新郎父母答谢词
2014/01/16 职场文书
学生安全责任书
2014/04/15 职场文书
业务员自荐信范文
2014/04/20 职场文书
解决persistence.xml配置文件修改存放路径的问题
2022/02/24 Java/Android
MyBatis配置文件解析与MyBatis实例演示
2022/04/07 Java/Android