Ich habe eine Beispielanwendung, die ein Hauptfenster mit einer einfachen Schaltfläche "Grafik in einem neuen Fenster zeichnen" enthält. Wenn ich auf diese Schaltfläche klicke, sollte ich zu einem untergeordneten Fenster gehen und dort eine Grafik zeichnen. Stattdessen wird das Diagramm im Hauptfenster gezeichnet, der NetworkX-Viewer wird in einem neuen (dritten) Fenster geöffnet und das untergeordnete Fenster ist leer.Öffnen von NetworkX Viewer aus einem vorhandenen Tkinter-Fenster
import Tkinter as tk
import networkx as nx
from networkx_viewer import Viewer
class MainWindow(tk.Frame):
counter = 0
def __init__(self, *args, **kwargs):
tk.Frame.__init__(self, *args, **kwargs)
self.button = tk.Button(self, text="Draw Graph in a new window",
command=self.create_window)
self.button.pack(side="top")
def create_window(self):
self.counter += 1
t = tk.Toplevel(self)
t.wm_title("Window #%s" % self.counter)
l = tk.Label(t, text="This is window #%s" % self.counter)
l.pack(side="top", fill="both", expand=True, padx=100, pady=100)
G=nx.complete_graph(30)
G.add_edge('a','b')
G.add_edge('b','c')
G.add_edge('c','a')
G.add_edge('c','d')
G.add_edge('b','d')
G.add_edge('p','q')
G.add_edge('q','r')
G.add_edge('r','p')
G.add_edge('r','s')
G.add_edge('q','s')
G.add_edge('w','x')
G.add_edge('x','y')
G.add_edge('y','w')
G.add_edge('y','z')
G.add_edge('x','z')
app = Viewer(G)
app.mainloop()
if __name__ == "__main__":
root = tk.Tk()
main = MainWindow(root)
main.pack(side="top", fill="both", expand=True)
root.mainloop()