def main():
# 问题 2:无向图的最短路问题(司守奎,数学建模算法与应用,P43,例4.3)
G2 = nx.Graph() # 创建:空的 有向图
G2.add_edge('A', 'B', weight=1) # 添加 带权边,weight表示边权
G2.add_edge('A', 'D', weight=7)
G2.add_edge('B', 'E', weight=4)
G2.add_edge('D', 'E', weight=3)
G2.add_edge('F', 'G', weight=4)
G2.add_edge('F', 'E', weight=5)
G2.add_edge('G', 'K', weight=9)
# 两个指定顶点之间的最短加权路径
source=nameEntry3.get()
target=nameEntry4.get()
minWPath_v1_v5 = nx.dijkstra_path(G2, source, target) # 顶点 0 到 顶点 3 的最短加权路径
return minWPath_v1_v5
# 两个指定顶点之间的最短加权路径的长度
lMinWPath_v1_v5 = nx.dijkstra_path_length(G2, source, target) # 最短加权路径长度
return lMinWPath_v1_v5
plt.clf()
pos = nx.spring_layout(G2) # 用 FR算法排列节点
nx.draw(G2, pos, with_labels=True, alpha=0.5)
labels = nx.get_edge_attributes(G2, 'weight')
nx.draw_networkx_edge_labels(G2, pos, edge_labels=labels)
# plt.show()
edgeList = []
for i in range(len(minWPath_v1_v5)-1):
edgeList.append((minWPath_v1_v5[i], minWPath_v1_v5[i+1]))
nx.draw_networkx_edges(G2, pos, edgelist=edgeList, edge_color='m', width=4)
# 设置边的颜色
plt.savefig('path' +'.jpg')
filename = ".\path.jpg"
image = Image.open(filename)
photo = ImageTk.PhotoImage(image)
canvas.create_image(450,250,image = photo)
canvas.update()
time.sleep(sleep_time)
frame_mid = Frame(width=800,height=100,bg='white')
frame_mid.grid(row=8,column=10,rowspan=6,columnspan=2,padx=4, pady=5)
canvas = Canvas(frame_mid,width = 800,height = 600,bg = '#FFCCCC')#画板
canvas.grid()
def main2():
EditText.insert(tkinter.END,main())
EditText=tkinter.Text(window2,width=15,height=5)
EditText.grid(row=8,column=8)
def main3():
main()
q=tkinter.Button(window2,text="确定", font=('宋体',15),command=main2)
q.grid(row=7,column=6)
q=tkinter.Button(window2,text="确定", font=('宋体',15),command=main3)
q.grid(row=7,column=8
为什么我用networkx和canvas画的图显示不到tkinter里
该如何让它显示呢