我正在使用Networkx查看器库编写一个python程序。该程序的目标是绘制一个图(即由顶点连接的一组节点),并使该图随着时间的推移“增长”(即,随着时间的推移出现新的节点)。我编写了下面的代码,基于我从这里获取的一个类似的工作示例。
在过去的24小时里,我一直在努力想办法解决这个问题,但仍然无法让它发挥作用。问题似乎与之后的方法有关。如果删除相应的行,程序就会发出画布显示;否则,它就不会显示任何内容。有人知道我怎样才能让这件事起作用吗?
import tkinter as tk
import networkx as nx
from networkx_viewer import GraphCanvas
class GraphGrower(tk.Tk):
def __init__(self, graph):
tk.Tk.__init__(self)
self.graph_item = graph
self.canvas = GraphCanvas(self.graph_item)
self.canvas.grid(row=0, column=0, sticky='NESW')
def add_node_after(self,node_num):
self.graph_item.add_node(node_num)
self.canvas = GraphCanvas(self.graph_item)
self.canvas.grid(row=0, column=0, sticky='NESW')
self.canvas.after(10000, self.add_node_after(str(int(node_num)+1)))
# REMOVE THE ABOVE LINE AND IT UPDATES THE GRAPH TO A 5 VERTEX GRAPH
# Graphs can be found at
# https://networkx.github.io/documentation/networkx-1.10/reference/generators.html
G = nx.fast_gnp_random_graph(4,0.85)
app = GraphGrower(G)
app.add_node_after(str(5))
app.mainloop()发布于 2017-03-14 12:23:03
你用得不对。考虑这一行代码:
self.canvas.after(10000, self.add_node_after(str(int(node_num)+1))) 与此完全相同:
result = self.add_node_after(str(int(node_num)+1))
self.canvas.after(10000, result)看到问题了吗?after需要一个可调用的--函数的引用。如果需要传递参数,可以将参数作为参数添加到after
node = str(int(node_num)+1)
self.canvas.after(10000, self.add_node_after, node)https://stackoverflow.com/questions/42784196
复制相似问题