You need to enable JavaScript to run this app.
最新活动
大模型
产品
解决方案
定价
生态与合作
支持与服务
开发者
了解我们

如何在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会返回当前鼠标位置下的顶点对象,没有悬停在顶点上时返回None
  • widget.gp.g.vertex_index[vertex]就是你要找的顶点索引值,对应你例子里的“56”
  • 你可以根据需求修改事件处理逻辑,比如把索引存储到变量、显示在状态栏,或者触发其他操作

需要注意的是,这个方法依赖graph-tool的GTK后端,确保你的环境已经安装了GTK相关依赖(graph-tool通常会默认集成,若缺失可以额外安装)。

内容的提问来源于stack exchange,提问作者NicolasBizzozzéro

火山引擎 最新活动