如何从PyGTK的树视图中获取选定项的值?

16 投票
1 回答
16940 浏览
提问于 2025-04-17 05:14

我正在学习PyGtk。我的树视图很简单,只有一列,我是从一个列表中获取树视图的项目。

我该如何获取在树视图中选中的项目的值呢?

1 个回答

27

你可以使用 gtk.TreeView.get_selection() 这个方法来获取 gtk.TreeSelection

接下来,你应该使用 gtk.TreeSelection.get_selected_rows() 这个方法来获取树模型(也就是 ListStore)和被选中的项目路径。

然后,你可以使用 gtk.TreeModel.get_iter() 方法,从路径中获取迭代器(这个路径是通过 gtk.TreeSelection.get_selected_rows() 方法返回的)。

最后,你可以使用 gtk.TreeModel.get_value() 方法来获取对应于之前得到的列和迭代器的值。

示例:

def onSelectionChanged(tree_selection) :
    (model, pathlist) = tree_selection.get_selected_rows()
    for path in pathlist :
        tree_iter = model.get_iter(path)
        value = model.get_value(tree_iter,0)
        print value

listStore = gtk.ListStore(int)
treeview = gtk.TreeView()
treeview.set_model(listStore)
tree_selection = treeview.get_selection()
tree_selection.set_mode(gtk.SELECTION_MULTIPLE)
tree_selection.connect("changed", onSelectionChanged)

撰写回答