matplotlib更改窗口图标的方法示例
作者:mighty13 时间:2023-01-15 17:55:30
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
来源:https://blog.csdn.net/mighty13/article/details/112600060
标签:matplotlib,窗口图标
0
投稿
猜你喜欢
Python修改Excel数据的实例代码
2021-05-24 12:40:29
详解django.contirb.auth-认证
2021-12-21 16:48:40
如何在mac下配置python虚拟环境
2023-06-16 18:09:37
Apache部署Django项目图文详解
2023-12-17 06:51:05
FSO中的SubFolders 属性介绍
2008-01-05 13:57:00
实用301转向到另一域名相应页面的asp代码
2011-04-18 10:42:00
Python深度学习之Keras模型转换成ONNX模型流程详解
2023-01-02 00:32:44
Python纯代码通过神经网络实现线性回归的拟合方式
2022-07-12 23:54:59
vue中的ref和$refs的使用
2024-05-13 09:08:44
Python+OpenCV之图像轮廓详解
2023-08-10 18:59:42
MySQL模糊查询用法大全(正则、通配符、内置函数)
2024-01-22 13:48:50
JavaScript中定义函数的三种方法
2024-05-09 10:37:04
Golang设计模式中抽象工厂模式详细讲解
2023-08-04 20:46:46
浅析SQL Server 2008企业级新特性
2008-11-24 17:01:00
python实现用于测试网站访问速率的方法
2023-07-28 19:12:02
python爬虫中get和post方法介绍以及cookie作用
2021-06-20 06:49:00
Servermanager启动连接数据库错误如何解决
2024-01-13 23:46:55
python是否适合网页编程详解
2021-04-19 11:35:47
python使用turtle库绘制树
2022-04-14 09:09:06
五大提高ASP运行效率的技巧
2007-09-20 13:15:00