Помочь с анимацией графика на питоне

Мне нужно сделать так, чтобы можно было остановить или запустить анимацию графика. Я пытался решить эту проблему, но почему-то ничего не работает. Вот мой код:

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()

Ответы (0 шт):