[Python-de] pygtk mit TreeView

Jochen Schulz ml at well-adjusted.de
Mit Apr 27 09:59:15 CEST 2005


Volker Helm:
> 
> > 
> > Was meinst du mit "dynamisch erstellen"?
> 
> Darunter verstehe ich, dass ein Select auf Datenbanktabellen nicht immer
> die gleiche Strukturen wiedergibt. Z.B. die Abfrage auf eine
> Schauspielertabelle ergibt andere Felder (Werte, Datentypen und
> Reihenfolgen) als die Abfrage auf eine Tabelle mit Filmtiteln.

Du kannst ja das listStore abhängig von der Abfrage immer wieder neu
bauen. Das setzt natürlich voraus, daß Du jeweils weißt (oder
herausfinden kannst), was für Datentypen Du zurückbekommst. Dann teilst
Du Deiner TreeView mit set_model() mit, welche listStore es jetzt
darstellen soll.

> cur.execute("""select blah, blubb from schauspieler""") die
> Tabellenköpfe (cur.description) ausgelesen wurde, möchte ich das
> Datenmodell aufbauen, in dem dann die Daten eingetragen werden.
> 
> Leider habe ich die Dokumentation (Tutorial) so verstanden, dass bei
> gtk.ListStore die Datenstruktur fest definiert sein muss.

Ja, das ist aber gar kein Problem. Datenmodell (ListStore) und
Darstellung (TreeView) sind unabhängig voneinander.

> Leider habe
> ich keine Ahnung, wie ich eine, nach der Datenbankabfrage, dynamisch
> generierte Struktur gtk.ListStore übergeben kann. Tuples, List und
> Strings hat er bisher abgelehnt.

Neu aufbauen. Mußt Du ja eh machen, wenn sich die ganzen Daten geändert
haben.

> Z.B. für Schauspieler:
> <code>
>   self.liststore = gtk.ListStore(gobject.TYPE_STRING,
>                     gobject.TYPE_STRING,gobject.TYPE_INT)
-- snip
> Bei Filmtiteln wird das Datenmodell eher aussehen wie
> gtk.ListStore(str,int,str,int)
> # Titel, Länge, Medium(DVD,Video etc.), Freigabealter

Du könntest type() benutzen, um die Datentypen festzustellen. Die
Spaltentitel kriegst Du eventuell noch aus Deiner Abfrage zusammen
(ggf. Aliase benutzen, damit das lesbar wird).

> PS: Weiß einer ein gutes Tutorial für Glade mit python und pygtk?

http://primates.ximian.com/~sandino/python-glade/

J.
-- 
I wear a lot of leather but would never wear fur.
[Agree]   [Disagree]
                 <http://www.slowlydownward.com/NODATA/data_enter2.html>