【发布时间】:2018-05-12 21:07:01
【问题描述】:
我想让两个动画同时工作。
这是我的代码:
import matplotlib.pyplot as plt
from matplotlib.backends.backend_tkagg import FigureCanvasTkAgg
import matplotlib.animation as animation
import tkinter as tk
f = plt.figure(figsize=(6, 2), dpi=100)
f1 = plt.figure(figsize=(4, 2), dpi=100)
def animate(i):
a = f.add_subplot(111)
x = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
y = [3, 5, 2, 7, 3, 5, 4, 6, 2, 2]
a.plot(x, y)
def animate1(j):
a1 = f1.add_subplot(111)
x1 = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
y1 = [6, 1, 4, 9, 4, 2, 5, 1, 2, 4]
a1.plot(x1, y1)
class Figure(tk.Frame):
def __init__(self, parent, controller):
tk.Frame.__init__(self, parent)
self.controller = controller
self.config(background='blue')
canvas = FigureCanvasTkAgg(f, self)
canvas.draw()
canvas.get_tk_widget().pack(side=tk.TOP, fill=tk.BOTH, expand=True)
class Figure1(tk.Frame):
def __init__(self, parent, controller):
tk.Frame.__init__(self, parent)
self.controller = controller
self.config(background='blue')
canvas = FigureCanvasTkAgg(f1, self)
canvas.draw()
canvas.get_tk_widget().pack(side=tk.TOP, fill=tk.BOTH, expand=True)
class Calculator(tk.Tk):
def __init__(self, *args, **kwargs):
tk.Tk.__init__(self, *args, *kwargs)
tk.Tk.wm_title(self, 'Beam calculator')
container = tk.Frame(self)
container.pack(side='top', fill='both', expand=True)
bfig = Figure(container, controller=self)
bfig.grid(row=0, column=0, sticky="nsew")
bfig1 = Figure(container, controller=self)
bfig1.grid(row=1, column=0, sticky="nsew")
if __name__ == '__main__':
app = Calculator()
app.geometry('1280x720')
ani = animation.FuncAnimation(f, animate, interval=1000)
ani1 = animation.FuncAnimation(f1, animate1, interval=1000)
app.mainloop()
但只出现第二个数字。
我找到了以下主题:
Animate two or more figures simultaneously with matplotlib
但我不知道如何正确地制作它。
【问题讨论】: