Matplotlib 导航工具栏自定义(Tkinter库下的使用为例)

仅修改工具栏的内容,以及按钮上的图片

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()
  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
好的,我可以为您提供一个示例代码,演示如何使用tkinter库,结合matplotlib,实现输入函数表达式后,绘制函数图像的功能。代码如下: ```python import numpy as np import matplotlib.pyplot as plt from matplotlib.backends.backend_tkagg import FigureCanvasTkAgg import tkinter as tk # 定义绘图函数 def plot_graph(expr): # 定义x轴数据 x = np.linspace(-10, 10, 1000) # 将表达式中的x替换为数组,将表达式转换为可计算的函数 f = eval("lambda x: " + expr) # 计算y轴数据 y = f(x) # 绘制函数图像 fig = plt.figure(figsize=(5, 4), dpi=100) plt.plot(x, y) # 将绘制的图像添加到tkinter窗口中 canvas = FigureCanvasTkAgg(fig, master=root) canvas.draw() canvas.get_tk_widget().pack() # 定义tkinter窗口 root = tk.Tk() root.title("绘制函数图像") # 定义函数表达式的输入框 expr_entry = tk.Entry(root, width=40) expr_entry.pack() # 定义绘图按钮,点击时调用plot_graph函数进行绘图 plot_btn = tk.Button(root, text="绘图", command=lambda: plot_graph(expr_entry.get())) plot_btn.pack() # 启动tkinter窗口 root.mainloop() ``` 运行这段代码后,程序会弹出一个tkinter窗口,包含一个输入框和一个绘图按钮。您可以在输入框中输入函数表达式,例如:`x**2+2*x+1`,然后点击绘图按钮,程序会根据您输入的表达式,绘制出对应函数的图像。需要注意的是,这段代码同样没有对用户输入的表达式进行任何安全性检查,因此需要谨慎使用

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值