[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.