2017-06-23 155 views
0

我正在學習如何使用matplotlib,現在我有一個問題。當我在「tkinter項目」中創建一個圖並給它一個子圖時,我使用NavigationToolbar2TkAgg創建一個工具欄。在出現的當前工具欄中,我想刪除配置子圖選項,但找不到這樣做的方法。從NavigationToolbar2TkAgg中刪除選項?

有沒有辦法做到這一點?

回答

0

的解決方案是,在這個問題已作出原則:How to modify the navigation toolbar easily in a matplotlib figure window?

但它可能不是很明顯如何使用它。所以我們可以使用CustomToolbar來調整here的代碼。該工具欄toolitems屬性可以改變,以除去不需要的"Subplots"按鈕。

import numpy as np 
import Tkinter as tk 
import matplotlib as mpl 
from matplotlib.patches import Rectangle 
from matplotlib.backends.backend_tkagg import FigureCanvasTkAgg, NavigationToolbar2TkAgg 

# custom toolbar with lorem ipsum text 
class CustomToolbar(NavigationToolbar2TkAgg): 
    toolitems = filter(lambda x: x[0] != "Subplots", NavigationToolbar2TkAgg.toolitems) 


class MyApp(object): 
    def __init__(self,root): 
     self.root = root 
     self._init_app() 

    # here we embed the a figure in the Tk GUI 
    def _init_app(self): 
     self.figure = mpl.figure.Figure() 
     self.ax = self.figure.add_subplot(111) 
     self.canvas = FigureCanvasTkAgg(self.figure,self.root) 
     self.toolbar = CustomToolbar(self.canvas,self.root) 
     self.toolbar.update() 
     self.plot_widget = self.canvas.get_tk_widget() 
     self.plot_widget.pack(side=tk.TOP, fill=tk.BOTH, expand=1) 
     self.toolbar.pack(side=tk.TOP, fill=tk.BOTH, expand=1) 
     self.canvas.show() 

    # plot something random 
    def plot(self): 
     self.ax.plot([1,3,2]) 
     self.figure.canvas.draw() 

def main(): 
    root = tk.Tk() 
    app = MyApp(root) 
    app.plot() 
    root.mainloop() 

if __name__ == "__main__": 
    main() 
+0

謝謝,它很好地工作 –