So suchen Sie durch einen gtk.ListStore in pyGTK und entfernen von Elementen?
Ich habe den folgenden code ein (wo store ist ein gtk.ListStore
und titer ist ein gtk.TreeIter
. Die docs sagen, dass, wenn es keine nächste Zeile, iter_next()
zurück None
, daher die Pause, wenn es gefunden ist. Es soll die Suche durch die ListStore
von (int, str)
und entfernen Sie die Elemente, deren int
- Komponente entspricht item_id.
while True:
if store.get_path(titer)[0] == item_id:
store.remove(titer)
break
else:
titer = store.iter_next(titer)
if titer is None:
break
Jedoch, wenn ein element in der Mitte hat, die zuvor gelöscht wurden, statt titer.iter_next()
Hinweis auf die nächste gültige element, es weist auf Keine. Dies bedeutet, dass, wenn das element mit der rechten int
Wert ist nach dem zuvor gelöschten Artikel, es wird nie gefunden. Gibt es eine richtige Weg, um suchen Sie durch einen gtk.ListStore
Artikel zu entfernen?
Du musst angemeldet sein, um einen Kommentar abzugeben.
Der einzige Fehler der mir auffällt, ist
store.get_path(titer)[0]
, die einfach nur die Zeilennummer der Liste Modell. Es solltestore.get_value(titer, 0)
.Durch die Art und Weise, Ihren code ausgedrückt werden kann, in einem einfacheren Stil mit der (PyGTK-nur) TreeModelRow:
sanity-check: stellen Sie sicher, dass die Daten in Ihrer Liste speichern, wenn Sie versuchen zu suchen, es