Как сопоставить элементы gtk.ListStore с моими собственными моделями

У меня есть список объектов проекта, которые я отображаю в файле GtkTreeView. Я пытаюсь открыть диалоговое окно с деталями проекта, когда пользователь дважды щелкает строку элемента в TreeView.

Прямо сейчас я получаю выбранное значение из TreeView (это имя проекта) через get_selection() и ищу этот проект по имени в моем собственном списке, чтобы сопоставить выбор с моей собственной моделью.

Однако это кажется не совсем правильным (плюс предполагается, что имя проекта уникально), и мне было интересно, есть ли более элегантный способ сделать это.


person Victor Stanciu    schedule 13.06.2010    source источник


Ответы (2)


Не со стандартными моделями. Вы можете попробовать использовать модели Py-gtktree, специально написанные для использования одних и тех же объектов в бэкенде и презентации.

В его документации описан альтернативный способ заставить это работать со стандартными моделями (то есть вообще без использования Py-gtktree), кстати, но я бы не назвал его элегантным.

person doublep    schedule 13.06.2010

В итоге я расширил gtk.ListStore и использовал свой собственный список. Я также захватил метод append(), чтобы он не только добавлял [str, str, etc] в ListStore, но и фактическую модель внутри пользовательского свойства списка класса, который расширяет ListStore.

Затем, когда пользователь дважды щелкает строку, я извлекаю запрошенную модель по индексу строки в ListStore, который соответствует индексу модели в пользовательском списке.

person Victor Stanciu    schedule 16.06.2010