2010-06-13 4 views
1

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

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

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

ответ

1

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

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

1

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

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