Treeview переходит к началу при выборе или редактировании элемента

В моем окне GTK3 у меня есть Treeview со многими элементами, поэтому я сделал его прокручиваемым. Я использую Scrolledwindow для этого:

self.codes = Gtk.Treeview()
codeswindow = Gtk.ScrolledWindow()
codeswindow.add_with_viewport(self.codes)
codeswindow.show()

При запуске приложения и выборе элемента (событие "selection_changed") древовидная структура переместится наверх, поэтому выбранный элемент будет вне поля зрения. То же самое происходит при двойном щелчке элемента для его редактирования. После выбора элемента мне нужно прокрутить вниз до выбранного элемента.

Как мне это предотвратить?

Может быть связано: при выборе элементов с помощью Arrow up или же Arrow down окно не прокручивается.

1 ответ

Решение

Как предложено в комментарии @ Aran-Fey Treeview может прокручивать и цитировать из документации:

Если у ребенка есть собственная прокрутка, вместо этой функции используйте gtk_container_add()

и кстати:

gtk_scrolled_window_add_with_viewport устарела с версии 3.8 и не должна использоваться во вновь создаваемом коде.

Замена add_with_viewport с add решает проблему:

self.codes = Gtk.Treeview()
codeswindow = Gtk.ScrolledWindow()
codeswindow.add(self.codes)
Другие вопросы по тегам