获取Gtk TreeView的行号


问题内容

我有一个名为 MyTree 的GTk TreeView, 其中 包含以下数据,如下所示:

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()

此时,它返回指向当前选定行的树iter。一切都很好。但是我有兴趣知道iter是否指向第0、1或2行。

我希望我已经说清楚了。 我需要行索引,而不是行iter。 如何获得行号?


问题答案:

由于您处于“浏览”选择模式,因此知道只有一行被选中。然后,您可以获取到第一个选定项目的路径

path = iter.get_selected_rows()[0]

然后,如果您的树只有一个级别(例如,它不是嵌套树),则可以从这样的路径获取索引

index = path.get_indices()[0]

看起来很复杂,但这是因为您的选择可能包含许多行(这就是为什么它返回列表)并且因为树可以具有许多级别(这就是为什么它返回路径)的原因。