Получить оригинальный номер строки из .get_model () и .get_path () после восстановления TreeView - PullRequest
3 голосов
/ 19 сентября 2010

Итак, у меня есть TreeView / TreeStore, который я заполняю данными из списка. Мое приложение использует только указанный список в качестве справочных данных. TreeStore просто создан для отображения. И TreeView можно восстановить, наклонив заголовки столбцов. Потому что .set_sort_column_id () использовался для инициализации каждого столбца.

Проблема в том, что следующий код всегда возвращает номер строки, по которому щелкнули, на дисплее:

# convert ListStore iter to row number
def rowno(self):
     (model, iter) = self.MY_LIST_STORE.get_selection().get_selected()
     return model.get_path(iter)[0]

Это должно было сделать это. Это работает нормально для меня, пока отображается оригинальный несортированный список. После восстановления TreeView (и TreeStore?) Отображаемые номера строк (.get_path) больше не соответствуют номерам строк в моем исходном хранилище данных.

Как я могу отобразить это? Или как узнать, какой номер выбранного пути соответствует какой записи в первоначально переданном списке TreeView?

(Конечно, я мог бы вставить искусственный столбец в TreeStore, чтобы сохранить свой исходный номер строки. Но должен быть какой-то собственный способ добиться этого?)

1 Ответ

2 голосов
/ 23 сентября 2010

Поздравляем, вы вошли в самое ужасное, что может предложить PyGTK. Я не ожидаю вознаграждения за это, но мое решение вращается вокруг оборачивания вашей Модели в Сортируемую модель, а также в Фильтруемую. Таким образом, вы можете получить различные пути и итеры для 3-х вложенных моделей в зависимости от того, что вы хотите. Код здесь слишком экстремальный, но мы обобщили его в PyGTKHelpers , чтобы использовать безболезненно или копировать для собственной реализации. Вот модуль.

...