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

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

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

1
Victor Stanciu 13 Июн 2010 в 20:09

2 ответа

Лучший ответ

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

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

1
Victor Stanciu 16 Июн 2010 в 20:02

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

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

1
doublep 13 Июн 2010 в 16:17