Я реализовал перетаскивание в 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 на экране?