我是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 Animation不同,因为我正在Toplevel内部运行动画。如果我以root用户身份运行,它将可以正常工作。