3
如何在树状视图中向上或向下移动选择?Python GTK3 Treeview向上或向下移动选择
这个想法是,我可以有一个向上和向下按钮将选择向上或向下移动一行。
我的Treeview正在使用一个ListStore。不知道这是否重要。
如何在树状视图中向上或向下移动选择?Python GTK3 Treeview向上或向下移动选择
这个想法是,我可以有一个向上和向下按钮将选择向上或向下移动一行。
我的Treeview正在使用一个ListStore。不知道这是否重要。
首先,我将使用C代码,因为这是我熟悉的。如果您在将问题转换为Python时遇到问题,请说出来,我会尽我所能提供帮助。
要用于此的类是GtkTreeSelection
。基本上,你要做的就是:
gtk_tree_view_get_selection
)GtkTreeIter
(gtk_tree_selection_get_selected
)。gtk_tree_model_iter_next/previous
)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, ¤t);
if (gtk_tree_model_iter_next(model, ¤t))
gtk_tree_selection_select_iter(sel, ¤t);
}
(here参考完整的程序)
连接时,我将TreeSelection对象传递给回调函数。
编辑:这是塞缪尔·泰勒·如何翻译上面的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)
您是否尝试过重新排序树模型(名单店)? – XORcist
我认为有些人对你的编辑感到困惑,认为它会用另一种语言随意添加代码,而不会先阅读你的问题。我继续自己添加你的代码。 – Ancurio