Анимированный граф Matplotlib внутри Toplevel в Tkinter - PullRequest
0 голосов
/ 07 июня 2019

Я новичок в 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, это бы сработало.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...