GTK + 3.0: Wie verwende ich einen Gtk.TreeStore mit benutzerdefinierten Modellelementen?

Ich versuche, eine GTK-Anwendung in Python zu entwickeln, und bin wirklich mit der korrekten Verwendung von a festgefahrengtk.TreeStore. Mein Hauptproblem: Ich habe bereits einige JSON-Dateien analysiert und habe eine eigene Datenstruktur, die im Grunde eine Python-Liste und zwei Arten von Objekten ist: Eine repräsentiert eine Sammlung von Elementen (Sammlungen können nicht verschachtelt werden) und eine für die Darstellung von Elementen ( die sowohl in der Liste als auch in einer Sammlung vorkommen können).

Ich bin bereits mit der grundlegenden Verwendung von a vertrautTreeStore und gelang es, Elemente korrekt auf dem Bildschirm gerendert zu bekommen. Ich weiß nicht, wie ich damit umgehen soll, dass ein Baumladen nur Objekttypen speichern kann (ich bin mir derzeit nicht sicher, da ich nicht viel über das System der Objekttypen weiß). In der Dokumentation zu C sind die folgenden Basistypen (außer PixBuf) aufgeführt, die eingefügt und automatisch Python-Datentypen zugeordnet werden können:

Beispiel: gtk_tree_store_new (3, G_TYPE_INT, G_TYPE_STRING, GDK_TYPE_PIXBUF); erstellt einen neuen GtkTreeStore mit drei Spalten vom Typ int, string und GdkPixbuf.

Außerdem heißt es, Sie dürfen keine einfügenGType. Der Link aus der Dokumentation verweist direkt auf diesen Absatz:

Ein numerischer Wert, der die eindeutige Kennung eines registrierten Typs darstellt.

Meine Recherche zum Thema endet hier und Google findet meistens GTK 2.x-Tutorials und nichts über das Einfügen anderer Datentypen außerstr undint usw.
Fragen:

Ist es möglich, einen neuen GType (oder eine andere Schnittstelle, die das Einfügen benutzerdefinierter Daten in einen Baumspeicher ermöglicht) zu implementieren, und wie wird dies getan?
Ich habe bereits versucht abzuleitenGObject aber es hat nicht geholfen.

Wie kann ich es vermeiden, zwei Datenstrukturen gleichzeitig zu behalten?
Nämlich mein Parsing-Ergebnis und die doppelten Informationen in einem Treestore.

Wie ist es möglich mit gemischten Inhalten umzugehen?
In meinem Fall habe ich Sammlungen und Objekte mit unterschiedlichen Zusatzinformationen (die in der Baumansicht als Knoten mit oder ohne Kinder angezeigt werden).

Wenn die obigen Fragen gelöst sind, werde ich das Problem auch beim Umgang mit Auswahlen los: Es ist schwierig, einen einfachen Typ wie zu findenstr oderint passend zu einem Artikel, den ich zuvor eingefügt habe. Ein solches Attribut muss ein Schlüssel sein, und dennoch würden Sie die Liste mit geparsten Ergebnissen durchsuchen, was völlig ineffektiv ist.

Danke im Voraus!

Zusätzliche Informationen, die nicht direkt mit der Frage zusammenhängen:

Ich dachte, es könnte eine realisierbare Herausforderung sein, einen Kundenwunsch umzusetzenTreeModel bis ich das in aTutorial für GTK 2:

All dies hat jedoch einen Preis: Sie sind esEs ist unwahrscheinlich, dass ein nützliches benutzerdefiniertes Modell in weniger als tausend Zeilen geschrieben wird, es sei denn, Sie entfernen alle Zeilenumbrüche. Das Schreiben eines benutzerdefinierten Modells ist nicht so schwierig, wie es sich anhört, und die Mühe lohnt sich möglicherweise, nicht zuletzt, weil es zu viel sichererem Code führt, wenn Sie viele Daten im Auge behalten müssen.

Ist das noch gültig?

Ich bin gerade rübergekommenhttp://www.pygtk.org/articles/subclassing-gobject/subclassing-gobject-in-python.htm Kann das hilfreich sein? Genauso viele Ressourcen gibt es für PyGTK 2.0. veraltet.

Antworten auf die Frage(1)

Ihre Antwort auf die Frage