Seite 1 von 1

gtk.TreeModel.foreach liefert nichts zurück

Verfasst: Donnerstag 30. August 2007, 13:30
von CrackPod
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

Verfasst: Donnerstag 30. August 2007, 14:04
von BlackJack
`TreeModel.foreach()` gibt `None` zurück. Die Methode wendet die angegebene Funktion auf alle Elemente an. Das war's.

Verfasst: Donnerstag 30. August 2007, 14:10
von CrackPod
Mist.. Damit hab ich irgendwie schon gerechnet, nachdem ich ewig nix gefunden hab.
Wie würdest du das dann am besten lösen?
LG

Verfasst: Donnerstag 30. August 2007, 15:11
von veers
for row in store... ;)

Verfasst: Donnerstag 30. August 2007, 16:17
von CrackPod
veers hat geschrieben:for row in store... ;)
Das isn wort :D
Danke