在Matplotlib图窗口中更改图标

时间:2012-04-17 10:37:43

标签: python icons matplotlib tkinter

是否可以更改Matplotlibe图形窗口的图标?我的应用程序有一个按钮,打开带有图形的图形窗口(使用Matplotlib创建)。我设法修改了应用程序图标,但图形窗口仍然有“Tk”图标,这是典型的Tkinter。

5 个答案:

答案 0 :(得分:4)

我用这种方式解决了它: 在我按下用imshow()show()创建图形的按钮之前,我用这种方式初始化图形:

plt.Figure()
thismanager = get_current_fig_manager()
thismanager.window.wm_iconbitmap("icon.ico")

所以当我按下show()时,窗口会显示我想要的图标。

答案 1 :(得分:3)

对我来说,之前的答案不起作用,而是需要以下内容:

from Tkinter import PhotoImage
import matplotlib

thismanager = matplotlib.pyplot.get_current_fig_manager()
img = PhotoImage(file='filename.ppm')
thismanager.window.tk.call('wm', 'iconphoto', thismanager.window._w, img)

答案 2 :(得分:0)

如果您使用的是Qt4Agg后端,以下代码可能会对您有所帮助:

thismanager = plt.get_current_fig_manager()
from PyQt4 import QtGui
thismanager.window.setWindowIcon(QtGui.QIcon((os.path.join('res','shepherd.png'))))

答案 3 :(得分:0)

在这里添加这个,现在Qt5Agg后端已经成为主流。它与Qt4Agg后端类似(几乎相同),如 Sijie Chen 的回答所述。

import os
import matplotlib.pyplot as plt
from PyQt5 import QtGui

# Whatever string that leads to the directory of the icon including its name
PATH_TO_ICON = os.path.dirname(__file__) + '/static/icons/icon.ico'

plt.get_current_fig_manager().window.setWindowIcon(QtGui.QIcon(PATH_TO_ICON))

答案 4 :(得分:0)

我发现在带有PyQT5的OS X下,执行plt.get_current_fig_manager().window.setWindowIcon()无效。要更改停靠图标,您必须在setWindowIcon()实例而非窗口上调用QApplication

对我有用的是:

QApplication.instance().setWindowIcon(QtGui.QIcon(icon_path))

请注意,QApplication.instance()在实际创建图形之前将是None,因此请首先这样做。