如何在graph-tool中获取选中顶点的vertex_index?
获取graph-tool中鼠标悬停顶点的vertex_index
嘿,我刚好研究过graph-tool里的交互顶点拾取问题,给你分享个可行的方案!其实graph-tool的GUI模块并没有直接提供获取悬停顶点的现成API,但我们可以通过绑定鼠标事件来实现这个需求,下面是完整的示例代码:
from graph_tool.all import * import gtk def on_mouse_motion(widget, event): # 获取当前鼠标位置对应的顶点对象 vertex = widget.picked_vertex if vertex is not None: # 提取顶点的vertex_index属性值 idx = widget.gp.g.vertex_index[vertex] print(f"当前悬停的顶点index是: {idx}") # 也可以把index显示在窗口标题里,更直观 widget.set_title(f"悬停顶点index: {idx}") # 创建一个示例图(你可以替换成自己的图) g = random_graph(100, lambda: 3, directed=False) # 初始化图形窗口,传入图和顶点位置属性 gw = GraphWindow(g, g.vp.pos, geometry=(800, 600)) # 绑定鼠标移动事件到自定义处理函数 gw.graph.connect("motion-notify-event", on_mouse_motion) # 启动GUI主循环 gw.show_all() gtk.main()
关键细节说明:
widget.picked_vertex会返回当前鼠标位置下的顶点对象,没有悬停在顶点上时返回Nonewidget.gp.g.vertex_index[vertex]就是你要找的顶点索引值,对应你例子里的“56”- 你可以根据需求修改事件处理逻辑,比如把索引存储到变量、显示在状态栏,或者触发其他操作
需要注意的是,这个方法依赖graph-tool的GTK后端,确保你的环境已经安装了GTK相关依赖(graph-tool通常会默认集成,若缺失可以额外安装)。
内容的提问来源于stack exchange,提问作者NicolasBizzozzéro




