仅修改工具栏的内容,以及按钮上的图片
import tkinter as Tk
from matplotlib.backends.backend_tkagg import FigureCanvasTkAgg,NavigationToolbar2Tk
from matplotlib.figure import Figure
from PIL import ImageTk,Image #修改按钮图片用
class Mytoolbar(NavigationToolbar2Tk):
def __init__(self,canvas_,parent_):
self.toolitems=(
#text, tooltip_text, image_file, callback
('1', 'tool1tip', '5.png', 'fun1'),
('2', 'tool2tip', '2.png', 'fun2'),
('3', 'tool3tip', '3.png', 'fun3'))
NavigationToolbar2Tk.__init__(self,canvas_,parent_)
#重写NavigationToolbar2Tk类的_Button方法
def _Button(self, text, file, command, extension=''):
img=Image.open(file)
img.thumbnail((img.size[0]/8,img.size[1]/8)) #等比例缩放要设置在按钮上的图片
im = ImageTk.PhotoImage(img) #转为Tkinter需要的格式,PIL库旧版本可能不含有ImageTk,升级即可
b = Tk.Button(
master=self, text=text, padx=2, pady=2, image=im, command=command)
b._ntimage = im
b.pack(side=Tk.LEFT) #放置的位置
return b
#fun1的callback的实现
def fun1(self):...
#应用
root=Tk.Tk()
fig=Figure(figsize=(10,5),dpi=100)
ax=fig.add_subplot(111)
ax.plot([1,2,3],[4,5,6])
canvas=FigureCanvasTkAgg(fig,master=root)
canvas.draw()
mt=Mytoolbar(canvas, root)
mt.update()
mt.pack(side=Tk.BOTTOM, fill=Tk.X)
canvas.get_tk_widget().pack(side=Tk.TOP, fill=Tk.BOTH, expand=1)
root.mainloop()