GTK + 3.0: как использовать Gtk.TreeStore с пользовательскими элементами модели?

Я пытаюсь разработать приложение GTK на Python, и я действительно застрял с правильным использованиемgtk.TreeStore, Моя основная проблема: я уже проанализировал некоторые JSON, и у меня есть собственная структура данных, которая в основном состоит из списка Python и двух типов объектов: один представляет коллекцию элементов (коллекции не могут быть вложенными), а другой - для представления элементов ( который может появиться в списке, а также в коллекции).

Я уже знаком с основами использованияTreeStore и удалось получить элементы правильно отображаются на экране. Я не знаю, как справиться с тем фактом, что хранилище деревьев способно хранить только типы объектов (на данный момент я не уверен, потому что я мало знаю о системе типов объектов). Документация для C перечисляет следующие (кроме PixBuf) основные типы, которые могут быть вставлены и автоматически сопоставлены с типами данных Python:

As an example, gtk_tree_store_new (3, G_TYPE_INT, G_TYPE_STRING, GDK_TYPE_PIXBUF); will create a new GtkTreeStore with three columns, of type int, string and GdkPixbuf respectively.

Кроме того, он говорит, что вы можете вставить любойGType, Ссылка из документации прямо указывает на этот абзац:

A numerical value which represents the unique identifier of a registered type.

На этом мое исследование темы заканчивается, и Google находит в основном учебники по GTK 2.x и ничего о вставке других типов данных, кромеstr а такжеint и т.п.
Вопросы:

Is it possible to implement a new GType (or any other interface that will make insert custom data in a treestore possible) and how to do it?
I already tried deriving from GObject but it didn't help.

How can I get rid of keeping two data structures at the same time?
Namely my parsing result and the duplicate information in a Treestore.

How is it possible to deal with mixed content?
In my case I have collections and items with different additional information (which are mirrored in the treeview as nodes with or without children).

Если вышеуказанные вопросы решены, я также избавляюсь от проблемы при обработке выборок: трудно подобрать простой тип, такой какstr или жеint чтобы соответствовать элементу, который я вставил ранее. Такой атрибут должен быть ключевым, и все же вы будете искать в списке с проанализированными результатами, что неэффективно.

Заранее спасибо!

Дополнительная информация, не связанная напрямую с вопросом:

Я думал, что это может быть реальной задачей для реализации пользовательскихTreeModel пока я не прочитал это вучебник для GTK 2:

However, all this comes at a cost: you are unlikely to write a useful custom model in less than a thousand lines, unless you strip all newline characters. Writing a custom model is not as difficult as it might sound though, and it may well be worth the effort, not least because it will result in much saner code if you have a lot of data to keep track of.

Это все еще в силе?

I just came across http://www.pygtk.org/articles/subclassing-gobject/sub-classing-gobject-in-python.htm Может ли это быть полезным? Как много спасателей для PyGTK 2.0. осуждается.

Ответы на вопрос(1)

Ваш ответ на вопрос