gtk.TreeModel.foreach liefert nichts zurück

Programmierung für GNOME und GTK+, GUI-Erstellung mit Glade.
Antworten
CrackPod
User
Beiträge: 205
Registriert: Freitag 30. Juni 2006, 12:56

Hallo,

ich hab 2 Listen(also Liststores), die sowohl gleiche(z.B. Namen), als auch unterschiedliche(z.B. Geld) Daten beinhalten.
Nun möchte ich die unterschiedlichen Daten miteinander vergleichen.
Ich hab mir das so vorgestellt, dass ich mit dem Namen der einen Spalte die Werte des gleichen Namen in der anderen Spalte abrufe.
Allerdings gibt es ja keine "direkte Suche" nach Werten in einem TreeModel, deswegen hab ich mir mit TreeModel.foreach sowas gebaut:

Code: Alles auswählen

def search_related_merchandise(model, path, iter, searched):
    name = model.get_value(iter, 0)
    if name == searched:
    print iter
    return iter
selection = list1.get_selection()
model1, iter1 = selection.get_selected()
name = model1.get(iter1, 0)
model2 = list2.get_model()
iter2 = model2.foreach(search_related_merch, name)
print iter
price = model2.get(iter2, 2)
print price
Die ausgabe sieht dann wie folgt aus:

Code: Alles auswählen

<GtkTreeIter at 0xbfce950c>
None
Traceback (most recent call last):
  File "ListStores.py", line 280, in trade
    price = model2.get(iter2, 2)
TypeError: iter must be a GtkTreeIter
Wieso wird der TreeIter der von der Funktion an TreeModel.foreach() zurückgegeben wird nicht von der Methode "zu mir" zurückgegeben, sondern None?

LG Tobsl
BlackJack

`TreeModel.foreach()` gibt `None` zurück. Die Methode wendet die angegebene Funktion auf alle Elemente an. Das war's.
CrackPod
User
Beiträge: 205
Registriert: Freitag 30. Juni 2006, 12:56

Mist.. Damit hab ich irgendwie schon gerechnet, nachdem ich ewig nix gefunden hab.
Wie würdest du das dann am besten lösen?
LG
Benutzeravatar
veers
User
Beiträge: 1219
Registriert: Mittwoch 28. Februar 2007, 20:01
Wohnort: Zürich (CH)
Kontaktdaten:

for row in store... ;)
CrackPod
User
Beiträge: 205
Registriert: Freitag 30. Juni 2006, 12:56

veers hat geschrieben:for row in store... ;)
Das isn wort :D
Danke
Antworten