获取Gtk TreeView的行号

4 投票
1 回答
4272 浏览
提问于 2025-04-17 14:58

我有一个叫MyTree的GTk树视图,里面有以下的数据,如下所示:

DTime  ATime Transfer Platform

14:30    15:20    0       2a

14:50    15:40    0       14b

15:00    16:00    2       3a

从上面可以看到,我有3行和4列的数据。所以我需要获取选中的那一行。我是这样做的:

selection = MyTree.get_selection()
selection.set_mode(Gtk.SelectionMode.BROWSE)
model, iter = selection.get_selected()

到目前为止,这个方法返回了一个树迭代器,它指向当前选中的那一行。这没问题。不过,我想知道这个迭代器指向的是第0行、第1行还是第2行。

我希望我说得够清楚。我需要的是行的索引,而不是行的迭代器。我该怎么获取行号呢?

1 个回答

5

因为你现在是在“浏览”选择模式下,所以你知道只有一行被选中了。接下来,你可以通过下面的方式获取第一个选中项的路径:

path = iter.get_selected_rows()[0]

然后,如果你的树形结构只有一层(比如说,它不是一个嵌套的树),你可以像下面这样从路径中获取索引:

index = path.get_indices()[0]

这看起来有点复杂,但其实是因为你的选择可能包含很多行(这就是为什么它返回一个列表),还有因为树形结构可能有很多层级(这就是为什么它返回一个路径)。

撰写回答