Не удается отсортировать столбцы в Gtk.TextView i Python 3 - PullRequest
0 голосов
/ 16 октября 2018

Когда я пытаюсь сделать мой Gtk.TreeView в Python сортируемым по столбцу, я использую что-то вроде

for i, column_title in enumerate(["Title A", "Title B"]):
    renderer = Gtk.CellRendererText()
    column = Gtk.TreeViewColumn(column_title, renderer, text=i)
    column.set_sort_indicator(True)
    column.set_sort_order(Gtk.SortType.ASCENDING)
    column.set_sort_column_id(i)  # trying to make columns sortable
    self.study_view.append_column(column)

, но когда я нажимаю на заголовок столбца, я получаю сообщение об ошибке

(main.py:14540): Gtk-CRITICAL **: 22:46:43.573: gtk_tree_sortable_get_sort_column_id: assertion 'GTK_IS_TREE_SORTABLE (sortable)' failed

Я погуглил проблему, но не нашел решения.Документы не дают подсказки.Что не так?

Вот строка в полном приложении Python, которая выдает сообщение об ошибке:

https://github.com/nordlow/dicom/blob/master/main.py#L241

Я использую эти документы в качестве ссылки:

https://python -gtk-3-tutorial.readthedocs.io / en / latest / treeview.html? Highlight = view # sorting

1 Ответ

0 голосов
/ 17 октября 2018

Это одна из самых сложных машин в Gtk.Вам нужно обернуть отфильтрованную TreeModel отсортированной моделью, чтобы можно было снова отсортировать отфильтрованную модель.Обратите внимание, что простой TreeModel можно отсортировать, прежде чем обернуть его фильтрованной моделью.Таким образом, ваш код должен выглядеть следующим образом: 225 :

self.study_store = StudyStore(client=self.client)
self.current_study_filter = None
self.study_filter = self.study_store.filter_new()
self.study_filter.set_visible_func(self.study_view_filter_func)
self.study_sort = Gtk.TreeModelSort(self.study_filter)
self.study_view = Gtk.TreeView.new_with_model(self.study_sort)

PS Я думаю, вы злоупотребляете переменными класса.Без обид, пожалуйста.

...