Отображение графика networkx в Tkinter после нажатия кнопки - PullRequest
0 голосов
/ 30 января 2020

Попытка получить простое приложение Tkinter для отображения графика networkx, когда пользователь нажимает кнопку. Вот код, который у меня есть:

import tkinter as tk
from tkinter import filedialog
import pandas as pd
import copy
import numpy as np
import networkx as nx
import matplotlib.pyplot as plt
import matplotlib

matplotlib.use("TkAgg")

from matplotlib.backends.backend_tkagg import FigureCanvasTkAgg#, NavigationToolbar2TkAgg
from matplotlib.figure import Figure


class Window(Frame):

    def __init__(self, master=None):
        Frame.__init__(self, master)               
        self.master = master
        self.init_window()

    def UploadAction(self,event=None):
        filename = filedialog.askopenfilename(initialdir = "/",title = "Select file",filetypes=(()))


    def runAnalysis(self,event=None):
        df = pd.DataFrame({'from': ['B', 'C', 'D', 'E','F','F'], 'to': ['A', 'A', 'A', 'A','C','B']})
        node_sizes = [2000,26400,2000,2000,2000,2000]
        node_colors = ['#3da4ab','#fe8a71','#3da4ab','#fe8a71','#f6cd61','#f6cd61']

        f = plt.figure(figsize=(5,4))
        a = f.add_subplot(111)
        plt.axis('off')

        # Build your graph
        G = nx.from_pandas_edgelist(df, 'from', 'to')

        # Plot it
        nx.draw(G, node_size=node_sizes, node_color=node_colors, with_labels=True, linewidths=0, edgecolors='black')

        canvas = FigureCanvasTkAgg(f, master=self.master)
        canvas.show()
        canvas.get_tk_widget().pack(side=Tk.TOP, fill=Tk.BOTH, expand=1)

        #plt.show()


    def init_window(self):
        self.master.title('Title... ')
        self.pack(fill=BOTH, expand=1)
        quitButton = Button(self, text="Quit",command=self.master.destroy)
        quitButton.place(x=0, y=0)
        uploadButton = Button(self,text="UploadFile",command=self.UploadAction)
        uploadButton.pack()

        runNetworkButton = Button(self,text="run analysis")
        runNetworkButton.pack()



r = tk.Tk()
r.geometry("800x400")
app = Window(r)
r.mainloop()

Когда я нажимаю кнопку запуска анализа анализа, ничего не происходит. Кто-нибудь может увидеть, что я здесь делаю не так? Я подозреваю, что это как-то связано с canvas = FigureCanvasTkAgg(f, master=self.master)

Заранее спасибо!

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