首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >网络成长动画

网络成长动画
EN

Stack Overflow用户
提问于 2017-03-14 11:01:15
回答 1查看 205关注 0票数 0

我正在使用Networkx查看器库编写一个python程序。该程序的目标是绘制一个图(即由顶点连接的一组节点),并使该图随着时间的推移“增长”(即,随着时间的推移出现新的节点)。我编写了下面的代码,基于我从这里获取的一个类似的工作示例。

在过去的24小时里,我一直在努力想办法解决这个问题,但仍然无法让它发挥作用。问题似乎与之后的方法有关。如果删除相应的行,程序就会发出画布显示;否则,它就不会显示任何内容。有人知道我怎样才能让这件事起作用吗?

代码语言:javascript
复制
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()
EN

回答 1

Stack Overflow用户

发布于 2017-03-14 12:23:03

你用得不对。考虑这一行代码:

代码语言:javascript
复制
self.canvas.after(10000, self.add_node_after(str(int(node_num)+1))) 

与此完全相同:

代码语言:javascript
复制
result = self.add_node_after(str(int(node_num)+1))
self.canvas.after(10000, result)

看到问题了吗?after需要一个可调用的--函数的引用。如果需要传递参数,可以将参数作为参数添加到after

代码语言:javascript
复制
node = str(int(node_num)+1)
self.canvas.after(10000, self.add_node_after, node)
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/42784196

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档