Оригинальный вопрос:Tkinter нажмите кнопку, чтобы запустить анимацию файл .py
У меня есть кнопка 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?
Вы пытались использовать что-то вроде 'os.system()' или 'subprocess.call()'? В [doc для 'execfile'] (https://docs.python.org/2/library/functions.html#execfile) говорится:« Если оба словаря опущены, выражение выполняется в среде, где вызывается execfile() , «похоже, что это может вызвать проблемы. – TigerhawkT3
Спасибо за лидерство! Я проведу вашу ссылку на 'execfile', а также узнаю о' os.system' и 'subprocess.call' больше. – user3852107