原始问题:
我有一个 Tkinter 按钮,按下它会执行一个 script.py 文件。
#-*- coding: utf-8 -*-
from Tkinter import *
master = Tk()
def callback():
execfile("script.py")
b = Button(master, text="OK", command=callback)
b.pack()
mainloop()
script.py 是一个 2D 动画,它将打开一个动画窗口。
"""
A simple example of an animated plot
"""
import numpy as np
import matplotlib.pyplot as plt
import matplotlib.animation as animation
fig, ax = plt.subplots()
x = np.arange(0, 2*np.pi, 0.01) # x-array
line, = ax.plot(x, np.sin(x))
def animate(i):
line.set_ydata(np.sin(x+i/10.0)) # update the data
return line,
#Init only required for blitting to give a clean slate.
def init():
line.set_ydata(np.ma.array(x, mask=True))
return line,
ani = animation.FuncAnimation(fig, animate, np.arange(1,200),init_func=init,interval=25, blit=True)
plt.show()
当我运行上面的 Tkinter 代码并按下按钮调用动画时,动画只会显示第一帧。换句话说,动画将不会播放。但如果 script.py 从命令行运行,动画会正确播放。问题是,从 Tkinter 代码运行时如何播放动画?