Python GTK3 Treeview向上或向下移动选择

如何在Treeview中上下移动选择?

我的想法是,我可以使用向上和向下按钮将选择移动到一行或一行.

我的Treeview正在使用ListStore.不确定是否重要.

最佳答案 首先,我将使用C代码,因为这是我熟悉的.如果您在将其翻译成
Python时遇到问题,那么请说明,我会尽力帮助您.

您要用于此的类是GtkTreeSelection.基本上,你做的是:

>获取视图的选择对象(gtk_tree_view_get_selection)
>获取当前选定的GtkTreeIter(gtk_tree_selection_get_selected).
>获取下一个/上一个(gtk_tree_model_iter_next / previous)
>如果有一个(即如果前一个函数返回true),则将其设为当前选中的一个(gtk_tree_selection_select_iter)

在我的小测试程序中,“向下”按钮的回调如下所示:

static void on_down(GtkWidget *btn, gpointer user_data)
{
    GtkTreeSelection *sel = GTK_TREE_SELECTION(user_data);
    GtkTreeModel *model;
    GtkTreeIter current;

    gtk_tree_selection_get_selected(sel, &model, &current);
    if (gtk_tree_model_iter_next(model, &current))
        gtk_tree_selection_select_iter(sel, &current);
}

(here是完整的程序供参考)

连接时,我将TreeSelection对象传递给回调.

编辑:这是Samuel Taylor将上述内容翻译成Python的方式:

TreeView = Gtk.TreeView()
list = Gtk.ListStore(str, str)
TreeView.set_model(list)

def down(widget):
    selection = TreeView.get_selection()
    sel = selection.get_selected()
    if not sel[1] == None:
        next = list.iter_next(sel[1])
        if next:
            selection.select_iter(next)
点赞