获取Gtk TreeView的行号
我有一个叫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]
这看起来有点复杂,但其实是因为你的选择可能包含很多行(这就是为什么它返回一个列表),还有因为树形结构可能有很多层级(这就是为什么它返回一个路径)。