[Python-de] pygtk mit TreeView
Andi Albrecht
andialbrecht at web.de
Fre Apr 29 06:34:52 CEST 2005
Hallo,
der ListStore, bzw. das TreeModel, haben anscheinend wirklich keine
Funktion wie insert_column() und sie akzeptieren auch (leider) keine
Liste als Parameter.
Eine Möglichkeit dies zu umgehen - wenn auch keine wirklich schöne -
wäre, den ListStore mit der exec-Funktion zu erzeugen:
>>> import gtk
>>> import gobject
>>> exec("store = gtk.ListStore(gobject.TYPE_STRING, gobject.TYPE_OBJECT)")
>>> store
<gtk.ListStore object (GtkListStore) at 0xb7b99b1c>
oder in einer Klasse:
class testView(gtk.TreeView):
def __init__(self):
gtk.TreeView.__init__(self)
exec("store = gtk.ListStore(self, gobject.TYPE_STRING,
gobject.TYPE_OBJECT)")
self.set_model(store)
Da exec() einen String erwartet, könnte man diesen String vorher je nach
DB-Abfrage zusammenbauen.
Aber ehrlich gesagt sind das Zeilen, die ich mit gewissem Unbehagen in
meinem Code sehen würde...
Grüße,
Andi
Jochen Schulz wrote:
> Volker Helm:
>
>>>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.
>>
>>Das Problem darin liegt, wie kann man das dynamisch machen. Im Tutorial
>>fand ich eine Anleitung, wenn diese generisch gebaut werden:
>>http://www.pygtk.org/pygtk2tutorial/sec-GenericTreeModel.html
>
>
> Uff.
>
>
>>Leider gab es kein Beispiel, wie man das Datenmodell für ListStore
>>anders zuweisen kann, sofern es dynamisch generiert werden soll.
>
>
> Ich denke, ich habe Dein Problem noch nicht ganz verstanden und da ich
> mit Python und Gtk auch noch am Anfang stehe, halte ich einfach mal
> meinen Mund.
>
>
>>Das hatte ich auch so verstanden,allerdings basiert doch die Darstellung
>> (TreeView) auf dem Modell (ListStore), welches vorher definiert werden
>>muss. Daraus werden die Reihenfolgen der Spalten gezogen. Alle
>>Umsortierungen der Spalten müssen der Darstellung ein neues Modell
>>zuweisen, habe ich das richtig verstanden?
>
>
> Ich bin nicht sicher. gtk.TreeView hat zumindest sowas wie
> insert_column() und remove_column(). Nicht schön, aber immerhin.
>
>
>>Sollte ich das irgendwann mal kapieren, schreibe ich wohl ein kleines
>>deutsche Tutorial darüber :-(.
>
>
> Oh ja, bitte! :-)
>
> J.