Python 在tkinter中删除画布生成的图形
我是新来的,这是我的第一个问题 我想建立一个程序,用户通过滚动条插入函数的参数,并在tkinter中生成该函数的图形 这是我的密码Python 在tkinter中删除画布生成的图形,python,matplotlib,tkinter,canvas,Python,Matplotlib,Tkinter,Canvas,我是新来的,这是我的第一个问题 我想建立一个程序,用户通过滚动条插入函数的参数,并在tkinter中生成该函数的图形 这是我的密码 from tkinter import* import tkinter import matplotlib.pyplot as plt from matplotlib.backends.backend_tkagg import (FigureCanvasTkAgg, NavigationToolbar2Tk) from mat
from tkinter import*
import tkinter
import matplotlib.pyplot as plt
from matplotlib.backends.backend_tkagg import (FigureCanvasTkAgg, NavigationToolbar2Tk)
from matplotlib.backend_bases import key_press_handler
from matplotlib.figure import Figure
import numpy as np
root = Tk()
root.title("Grath")
#root.geometry('500x600')
var_a = DoubleVar()
var_b = DoubleVar()
var_c = DoubleVar()
x1 = np.linspace(100, 0, 1000)
def y(x):
a = float(var_a.get())
b = float(var_b.get())
c = float(var_c.get())
return a*x**2+b*x+c
def graph():
fig.add_subplot(111).plot(x1, y(x1))
canvas = FigureCanvasTkAgg(fig, master=root) # A tk.DrawingArea.
canvas.draw()
canvas.get_tk_widget().pack()
#Labels and Bottons
label0=Label(root,text="Ploting f(x) = ax^2+b*x+c").pack()
label1=Label(root,text="Val of a").pack()
textbox1=Scale(root,from_=0,to=10,orient=HORIZONTAL,variable = var_a).pack()
label2=Label(root,text="Val of b").pack()
textbox2=Scale(root,from_=0,to=10,orient=HORIZONTAL,variable = var_b).pack()
label3=Label(root,text="val of c").pack()
textbox3=Scale(root,from_=0,to=10,orient=HORIZONTAL,variable = var_c).pack()
button1 = Button(root,text="Run",command=graph).pack()
fig = Figure(figsize=(5, 4), dpi=100)
canvas = FigureCanvasTkAgg(fig, master=root) # A tk.DrawingArea.
canvas.draw()
canvas.get_tk_widget().pack()
#canvas.get_tk_widget().pack(side=tkinter.TOP, fill=tkinter.BOTH, expand=1)
tkinter.mainloop()
我已经尝试了.destroy()函数,并定义了一个用.pack\u-forget()隐藏帧的函数,但是没有任何效果,我将在matplotlib端处理这个问题。始终使用相同的画布,因此Tkinter侧不会发生任何更改。可以使用
delaxes
从地物中删除子地块
def graph():
#删除现有子地块
如果图中所示为轴:
fig.delaxes(fig.axes[0])
图添加_子图(111)。图(x1,y(x1))
#更新画布
canvas.draw()
canvas.get_tk_widget().pack()