Изменить модель gtkListStore динамически - PullRequest
0 голосов
/ 25 июля 2011

Итак, я наконец-то понял, как работает PyGTK, и я работаю над простым приложением менеджера SQLite.

Чтобы показать результат запроса, я использую gtk.ScrolledWindow с gtk..В виде дерева.Мне удалось добавить и даже изменить значения в объекте ListStore так, как мне нужно, но я не могу изменить модель объекта ListStore.

Например, в одном запросе у меня может быть результатиз двух столбцов:

    self.query_results = gtk.ListStore(str,str)
    self.query_results.append(["1"],["John Doe"])

А в другом я могу получить больше столбцов:

    self.query_results = gtk.ListStore(str,str,str,str)
    self.query_results.append(["20"],["Jane"],["jane@example.com"],["password"])

Я знаю, что могу использовать такие вещи, как

     self.query_results = gtk.ListStore(*[str]*len(columns))

Но, очевидно,gtk.ListStore не может изменить свою модель после создания, так как мне обновить эту таблицу запросов?Нужно ли мне уничтожать древовидную структуру и снова рисовать ее каждый раз, когда я запускаю другой запрос?

Спасибо, и это мой первый вопрос о StackOverflow, поэтому прошу прощения за любые ошибки / правила публикации, которые я не выполнял.

1 Ответ

5 голосов
/ 26 июля 2011

Вы можете использовать gtk.TreeView.set_model, чтобы назначить новую модель для TreeView. Таким образом, вы можете сгенерировать новую модель для каждого набора результатов, а затем настроить TreeView для отображения этой модели.

...