Skip to content Skip to sidebar Skip to footer

How To Search Through A Gtk.liststore In Pygtk And Remove Elements?

I have the following code (where store is a gtk.ListStore and titer is a gtk.TreeIter. The docs say that if there is no next row, iter_next() will return None, hence the break when

Solution 1:

The only mistake I notice is store.get_path(titer)[0], which will just get the row number of the list model. It should be store.get_value(titer, 0).

By the way, your code can be expressed in a simpler style using the (PyGTK-only) TreeModelRow:

for row in store:
    if row[0] == item_id:
        store.remove(row.iter)
        break

Solution 2:

sanity check: make sure there is data in your list store when trying to search it

    column_number = 0
    search_term = 'foo'
    iter_child = tree_model.get_iter_first()
    tree_path = Nonewhile iter_child:
        if (tree_model.get_value(iter_child, column_number) == search_term):
            tree_path = tree_model.get_path(iter_child)
        iter_child = tree_model.iter_next(iter_child)

    view.row_activated(tree_path, column_number)
    view.set_cursor(tree_path, column_number, True)

Post a Comment for "How To Search Through A Gtk.liststore In Pygtk And Remove Elements?"