2012-04-17 126 views
2

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

+0

不是你问什么了,但这里是Tkinter的嵌入matplot图的例子:http://matplotlib.sourceforge.net/examples/user_interfaces/embedding_in_tk.html(也许矫枉过正只是更改图标) – FabienAndre 2012-04-17 14:52:44

+0

@FabienAndre:谢谢,但我无法按照自己的想法做 – maupertius 2012-04-17 15:07:31

+2

由于您设法更改了常规tkinter窗口的图标,因此在tkinter窗口小部件中显示matplotlib图让您可以在自己的Tkinter窗口中显示它( Toplevel是让你打开窗口的小部件),你可以改变它的图标。此外,你不会被迫使用另一个可能提供有趣设计选择的窗口。 – FabienAndre 2012-04-17 15:16:02

回答

3

我解决它以这样的方式 之前我按创建具有imshow()show()图中的按钮,我初始化这样的数字:

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

所以当我按下show()的窗口有我想要的图标。

+0

谢谢你的回答。如果你使用wxAgg后端,等效代码是thismanager.window.SetIcon(wx.Icon(“mylogo.ico”,wx.BITMAP_TYPE_ICO)) – harijay 2012-05-06 18:39:49

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) 
0

如果使用Qt4Agg后端,下面的代码可以帮助你:

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

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

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))