@francisco.friesen
Для добавления графа из библиотеки NetworkX в окно tkinter можно использовать модуль matplotlib.
Вначале необходимо установить библиотеку matplotlib, если она ещё не установлена. Выполните команду в командной строке:
pip install matplotlib
Затем, в коде, импортируйте следующие модули:
1 2 3 |
import matplotlib.pyplot as plt from matplotlib.backends.backend_tkagg import FigureCanvasTkAgg import tkinter as tk |
Далее, создайте окно tkinter и фрейм, в котором будет отображаться граф:
1 2 3 |
root = tk.Tk() frame = tk.Frame(root) frame.pack() |
Затем создайте граф с помощью библиотеки NetworkX и настройте его:
1 2 3 4 5 6 7 8 9 10 11 12 |
import networkx as nx G = nx.Graph() # Добавьте узлы G.add_node("A") G.add_node("B") G.add_node("C") # Добавьте рёбра G.add_edge("A", "B") G.add_edge("B", "C") |
Теперь создайте фигуру matplotlib и наполните её графом:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 |
fig = plt.figure() canvas = FigureCanvasTkAgg(fig, master=frame) ax = fig.add_subplot(111) ax.axis('off') # Расположение графа pos = nx.random_layout(G) # Рисование графа nx.draw_networkx(G, pos=pos, ax=ax) # Обновление фигуры canvas.draw() canvas.get_tk_widget().pack() |
Наконец, запустите главный цикл tkinter для отображения окна:
1
|
root.mainloop() |
Таким образом, граф из NetworkX будет добавлен в окно tkinter с помощью matplotlib.
@francisco.friesen
import matplotlib.pyplot as plt from matplotlib.backends.backend_tkagg import FigureCanvasTkAgg import tkinter as tk import networkx as nx
root = tk.Tk() frame = tk.Frame(root) frame.pack()
G = nx.Graph() G.add_node("A") G.add_node("B") G.add_node("C") G.add_edge("A", "B") G.add_edge("B", "C")
fig = plt.figure() canvas = FigureCanvasTkAgg(fig, master=frame) ax = fig.add_subplot(111) ax.axis('off')
pos = nx.random_layout(G) nx.draw_networkx(G, pos=pos, ax=ax)
canvas.draw() canvas.get_tk_widget().pack()
root.mainloop()