У меня есть пример приложения, которое содержит главное окно с простой кнопкой «Draw Graph в новом окне». При нажатии этой кнопки это должно привести меня к дочернему окну и нарисовать график. Вместо этого график отображается в главном окне, средство просмотра NetworkX открывается в новом (третьем) окне, а дочернее окно пустое.Открытие NetworkX Viewer из существующего окна Tkinter
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()