Помочь с анимацией графика на питоне
Мне нужно сделать так, чтобы можно было остановить или запустить анимацию графика. Я пытался решить эту проблему, но почему-то ничего не работает. Вот мой код:
import tkinter as tk
import numpy as np
import matplotlib.pyplot as plt
from matplotlib.animation import FuncAnimation
from matplotlib.backends.backend_tkagg import FigureCanvasTkAgg
plt.style.use('seaborn-pastel')
window = tk.Tk()
button_frame = tk.Frame(window)
button_frame.pack(fill=tk.X, side=tk.BOTTOM)
start = tk.Button(button_frame, text="Начать анимацию", pady=10)
start.config(command=start)
stop = tk.Button(button_frame, text="Остановить анимацию", pady=10)
stop.config(command=stop)
button_frame.columnconfigure(0, weight=1)
button_frame.columnconfigure(1, weight=1)
start.grid(row=0, column=0, sticky=tk.W+tk.E)
stop.grid(row=0, column=1, sticky=tk.W+tk.E)
def init():
line.set_data([], [])
return line,
def animate(i):
x = np.linspace(0, 4, 1000)
y = np.sin(2 * np.pi * (x - 0.01 * i))
line.set_data(x, y)
return line,
def start():
anim.event_source.start()
anim.running ^= True
def stop():
anim.event_source.stop()
anim.running ^= False
fig = plt.figure()
fig1 = FigureCanvasTkAgg(fig, window)
fig1.get_tk_widget().pack(side=tk.LEFT, fill=tk.BOTH)
ax = plt.axes(xlim=(0, 4), ylim=(-2, 2))
line, = ax.plot([], [], lw=3)
anim = FuncAnimation(fig, animate, init_func=init,
frames=200, interval=20, blit=True)
anim.running=True
window.mainloop()