2017-06-23 142 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

谢谢,它很好地工作 –