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