У меня есть список объектов Проекта, которые я отображаю в a GtkTreeView
. Я пытаюсь открыть диалоговое окно с деталями Проекта, когда пользователь дважды щелкает по строке объекта в TreeView.
Прямо сейчас я получаю выбранное значение от TreeView (который является названием Проекта) через get_selection()
, и поиск того Проекта по имени в моем собственном списке для взаимосвязи выбора с моей собственной моделью.
Однако это не чувствует себя совершенно правильным (плюс, это предполагает, что имя Проекта уникально), и я задавался вопросом, существует ли более изящный способ сделать его.
В итоге я сделал расширение gtk.ListStore и использовал свой собственный список. Я также перехватил метод append(), чтобы он не только добавлял [str, str, etc] в ListStore, но и фактическую модель внутри пользовательского свойства list класса, расширяющего ListStore.
Затем, когда пользователь дважды щелкает по строке, я получаю запрашиваемую модель по индексу строки в ListStore, который соответствует индексу модели в пользовательском списке.
Не для моделей по умолчанию. Вы можете попробовать использовать модели Py-gtktree , написанные специально для использования одних и тех же объектов в бэкэнде и презентации.
Его документация описывает альтернативный способ сделать это со стандартными моделями (то есть вообще без использования Py-gtktree), кстати, но я бы не назвал его элегантным.