[Python-de] Re: GTKs TreeView

Marcus Habermehl bmh1980de at yahoo.de
Sam Feb 14 22:25:54 CET 2004


Am Fr, 2004-02-13 um 20.38 schrieb Walter Haslbeck:
> Marcus Habermehl <bmh1980de at yahoo.de> wrote:
> 
> > Ich dachte, dass ich mit
> > 
> >    treeview1.insert_column(os.system('rpm -qa | sort'))
> > 
> > auf dem richtigen Weg bin. Aber ich bekomme immer einen Error, dass der
> 
> Nein, dieser Methodenaufruf ergibt keinen Sinn.
> 
> > erste Eintrag gtk.TreeViewColumn sein muss.
> 
> eben.
> 
> > Was ist damit gemeint?? Wie muss das Ganze denn aussehen? Egal, was ich
> > vor os.system eingebe, es läuft auf einen Fehler hinaus. 
> 
> Ich denke, du hast nicht ganz verstanden wie ein TreeView Widget
> in GTK funktioniert.

Genau das ist das Problem. Aus irgend einem Grund kann ich mich mit GTK
nicht anfreunden. Es geht einfach nicht in mein Hirn rein. Obwohl ich
lieber mit GTK-Programme arbeite, als mit QT oder Tk.

> Du solltest dich erst nochmal unter
> 
> http://www.moeraki.com/pygtkreference/pygtk2reference/class-gtktreeview.html
> 
> mit TreeView, Model und CellRenderer vertraut machen und die
> Zusammenänge verstehen.

Ich werde es probieren. Da aber ein Englisch nicht so dolle ist, habe
ich ehrlich gesagt nicht viel Hoffnung, dass ich es wirklich verstehe.
Aber so schnell gebe ich auch nicht auf. ;-)

> Hier ein simples Beispiel mit einem ListStore() (einfache lineare Liste,
> kein Tree.):

Probieren wir mal, ob ich zumindest den Ansatz verstehe.

> [...]
> treeview1_model=gtk.ListStore(str)
> treeview1.set_model(treeview1_model)

Hier wird treeview1 eine Tabellenansicht mit einer Spalte des Types str
(also Text) zugewiesen.

> col = gtk.TreeViewColumn("OID", gtk.CellRendererText(), text=0)
> treeview1.append_column(col)

Hier werden der Spalte Attribute zugewiesen. "OID" ist dabei die
Überschrift. gtk.CellRendererText wird benutzt, weil es sich um Text
handelt. text=0 habe ich aber nicht verstanden. Irgendwas, dass die
Attribute von Spalte 0 angewendet werden sollen. Aber das ergibt für
mich keinen Sinn, da die Attribute doch gerade gesetzt werden.

> treeview1.clear()

Da sagt mein Python, dass gtk.TreeView kein Attribut 'clear' hat.

> for i in range(1,10):
>     iter=treeview1_model.append()
>     treeview1_model.set(iter, 0, "Eintrag: %d" % i)

Hiermit wird die Spalte mit Zeilen und natürlich Inhalt gefüllt.

Ich habe erstmal dein Beispiel in mein Skript übernommen. So lerne und
verstehe ich die Dinge nämlich eher. 

Werde mir jetzt mal nach und nach deinen Link zu gemüte führen.
Vielleicht komme ich ja doch weiter.

Gruß

Marcus