[pygtk] filtered and sortable listview
Jan Martinek
honza at dp.fce.vutbr.cz
Sat Mar 8 18:08:54 WST 2008
Hello,
I want to make a treeview displaying listview with the possibility of
sorting and filtering. I must be doing something wrong. This should
generate numbers from zero through twenty and only even numbers are
filtered - this works fine.
#!/usr/bin/python
import gtk, random
ls = gtk.ListStore(int)
values = range(20)
random.shuffle(values)
for i in values:
ls.append((i,))
rend = gtk.CellRendererText()
col = gtk.TreeViewColumn('Number', rend, text = 0)
col.set_sort_column_id(0)
def visiblefunc(model, iter):
return model.get_value(iter, 0) % 2 == 0
filter = ls.filter_new()
filter.set_visible_func(visiblefunc)
tv = gtk.TreeView(filter)
tv.append_column(col)
w = gtk.Window()
w.add(tv)
w.connect('destroy', gtk.main_quit)
w.show_all()
gtk.main()
But clicking on header does not sort the numbers. I get these errors
instead:
treeviewtest_visfil.py:29: Warning: invalid cast from
`GtkTreeModelFilter' to `GtkTreeSortable'
gtk.main()
treeviewtest_visfil.py:29: GtkWarning:
gtk_tree_sortable_get_sort_column_id: assertion `GTK_IS_TREE_SORTABLE
(sortable)' failed
gtk.main()
treeviewtest_visfil.py:29: GtkWarning:
gtk_tree_sortable_has_default_sort_func: assertion `GTK_IS_TREE_SORTABLE
(sortable)' failed
gtk.main()
treeviewtest_visfil.py:29: GtkWarning:
gtk_tree_sortable_set_sort_column_id: assertion `GTK_IS_TREE_SORTABLE
(sortable)' failed
gtk.main()
Thank you for help,
Jan Martinek
More information about the pygtk
mailing list