Как изменять график по нажатию на кнопку
В проекте должна быть реализована программа для построения графика функции y = 5 / x + 4, x берется из Scale, а управление работой программы через Button, цвет графика D2691E
from tkinter import *
from matplotlib.figure import Figure
from matplotlib.backends.backend_tkagg import FigureCanvasTkAgg
import numpy as np
def func():
x = []
y = []
for i in np.arange(0, 3, 0.01):
x.append(i)
y.append(5 / var.get() + 4)
plt.plot(x, y, color = '#D2691E')
tk = Tk()
tk.title('')
tk.geometry("700x500")
btn = Button(master = tk, text = 'change', command = func)
btn.pack()
fig = Figure(figsize = (10, 4))
plt = fig.add_subplot()
canvas = FigureCanvasTkAgg(fig, master = tk)
canvas.draw()
canvas.get_tk_widget().pack()
var = DoubleVar()
scale = Scale(tk, orient = HORIZONTAL, variable = var)
scale.pack()
tk.mainloop()
Ответы (1 шт):
Автор решения: assert
→ Ссылка
Я изначально не правильно подошёл к этому вопросу надо было создавать график и при нажатии проверять есть ли у нас график если есть то удалять и создать новый
from tkinter import *
from matplotlib.figure import Figure
from matplotlib.backends.backend_tkagg import FigureCanvasTkAgg
import numpy as np
def graph():
global canvas
if canvas:
canvas.get_tk_widget().destroy()
r = var.get()
x1 = np.linspace(-r, 0)
x2 = np.linspace(0, r)
y = lambda x : 5 / x + 4
fig = Figure()
ax = fig.add_subplot()
ax.plot(x1, y(x1), color = '#D2691E')
ax.plot(x2, y(x2), color = '#D2691E')
canvas = FigureCanvasTkAgg(fig, master = tk)
canvas.draw()
canvas.get_tk_widget().pack()
tk = Tk()
tk.geometry("700x500")
btn = Button(master = tk, text = 'change', command = graph)
var = DoubleVar()
scale = Scale(tk, orient = HORIZONTAL, variable = var)
btn.pack()
scale.pack()
canvas = None
graph()
tk.mainloop()