matplotlib更改窗口圖標的方法示例
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更改窗口圖標內容請搜索WalkonNet以前的文章或繼續瀏覽下面的相關文章希望大傢以後多多支持WalkonNet!
推薦閱讀:
- Pyqt+matplotlib 實現實時畫圖案例
- matplotlib源碼解析標題實現(窗口標題,標題,子圖標題不同之間的差異)
- 關於PyQt5中QtGui.QImage圖片顯示問題解析
- Pyside2中嵌入Matplotlib的繪圖的實現
- PyQt5實現將Matplotlib圖像嵌入到Scoll Area中顯示滾動條效果