Я новичок в tkinter, так что если что-то не так, извините.Тем не менее ...
Я использую Python 3.
Название довольно очевидно.Я пытаюсь анимировать график внутри моего tk.Toplevel в моем приложении.Я удалил весь оставшийся код, чтобы упростить вопрос.Этот код не работает, даже если я поставлю animation.FuncAnimation
непосредственно перед root.mainloop()
.
Вот мой код:
import tkinter as tk
import pandas as pd
import matplotlib.pyplot as plt
from matplotlib.backends.backend_tkagg import FigureCanvasTkAgg
import matplotlib.animation as animation
def running():
#Animate the graph
def animate(i):
global df1
df1 = pd.concat([df1,pd.DataFrame({'Country':[None],'GDP_Per_Capita':[df1['GDP_Per_Capita'].iloc[-1]+10]})],sort=False)
ax1.clear()
ax1.hist(df1['GDP_Per_Capita'], len(df1), density=1, histtype='step',
cumulative=True, label='Empirical')
global df1
t = tk.Toplevel()
t.wm_title("Running")
figure1 = plt.Figure(figsize=(6,5), dpi=100)
ax1 = figure1.add_subplot(111)
bar1 = FigureCanvasTkAgg(figure1, t)
bar1.get_tk_widget().grid(column=0,row=0,columnspan=2)
n, bins, patches = ax1.hist(df1['GDP_Per_Capita'], 5, density=1, histtype='step',
cumulative=True, label='Empirical')
ax1.set_title('Country Vs. GDP Per Capita')
ani = animation.FuncAnimation(figure1, animate, interval=1000)
if __name__ == "__main__":
root = tk.Tk()
root.title("Testing")
#Sample Data
Data1 = {'Country': ['US','CA','GER','UK','FR'],
'GDP_Per_Capita': [10,15,25,45,50]
}
df1 = pd.DataFrame(Data1, columns= ['Country', 'GDP_Per_Capita'])
df1 = df1[['Country', 'GDP_Per_Capita']].groupby('Country').sum()
tk.Button(root,
text='START', command=running, width=9, height=2, activebackground="white", bg="#006d88",bd=4).grid(row=0, column=1, sticky="E",padx=(0,10))
root.mainloop()
Этот вопрос не совпадает с этим PythonАнимация Tkinter , так как я запускаю анимацию внутри Toplevel.Если бы я работал в root, это бы сработало.