拖放后选择TreeView行而不移动视图

时间:2019-05-30 14:56:49

标签: python-3.x treeview gtk3 pygtk

我已经在TreeView中实现了拖放,只需在TreeView中移动行即可。我几乎让Gtk3处理所有细节,然后用drag_end信号做我需要做的事。问题在于,Gtk3不会在拖放后保留选中的行。我想选择被删除的行。但我也不想更改视图。

我可以通过在drag_begin信号处抓住它来跟踪移动的项目:

def on_theTreeView_drag_begin(self, treeview, drag_context):
    treeselection = treeview.get_selection()
    model, iter = treeselection.get_selected()
    myGlobalWindow.letterDragged = model.get_value(iter, 0)

然后,在触发drag_end时,我可以搜索移动的项目,然后选择它:

def on_theTreeView_drag_end(self, treeview, context):
    # do stuff

    # find letter and select that row in the new teaching order
    for row in myGlobalWindow.theListStore:
        if row[0] == myGlobalWindow.letterDragged:
            treeview.set_cursor(row.path)
            break

这可以正常工作,但是它将始终将所选行移动到TreeView的顶部。这使用户感到迷惑-他(她)将其拖放到特定位置,但是如果突然跳到TreeView的顶部,则很令人困惑。如果我注释掉set_cursor调用,则拖放工作正常,并且TreeView上的视图完全不会移动(不会跳转),但是TreeView结束时未选择任何行。

所以问题是:拖放操作后是否可以选择TreeView行,并保留TreeView在屏幕上的位置?

0 个答案:

没有答案