problema con Pygtk + Treeview + TreeModelFilter



Hola estimados,

En un treeview me es imposible hacer modificaciones con set_value()... lo raro es que hice casos de prueba y si tengo un treeview sin filtro funciona, si tiene filtro falla con:

tv_fail.py:19: GtkWarning: gtk_tree_store_set_value: assertion `VALID_ITER (iter, tree_store)' failed
  model.set_value (iter, 0, 'New value...')

lo raro es que el iter es totalmente valido...

adjunto los archivos para quien pueda darme una mano...

La idea es que cuando se active la fila seleccionada por row-activated se cambie su contenido.

salu2!

--
Eduardo Silva
http://edsiper.linuxchile.cl
#!/usr/bin/env python


import pygtk 
import gtk
import gobject

class test (gtk.TreeView):
    def __init__ (self):
        gtk.TreeView.__init__ (self)
        self.init_model ()
        self.init_view_columns ()
        self.connect ('row-activated', self._selected)

    def _selected (self, tv, path, col):
        store, iter = tv.get_selection ().get_selected()
        store.set_value (iter, 0, 'New value...')
    
    def init_model (self):
        store = gtk.TreeStore (gobject.TYPE_STRING)
        self.set_model (store)
        store.append(None, ['Valor inicial'])

    def init_view_columns (self):
        col = gtk.TreeViewColumn ()
        col.set_title ('Stock Items')
        render_text = gtk.CellRendererText ()
        col.pack_start(render_text, expand=True)
        col.add_attribute (render_text, 'text',0)
        self.append_column (col) 
                                                                

if __name__ == '__main__':
    w = gtk.Window ()
    w.set_size_request (width = 400, height = 300)
    w.connect ('destroy', gtk.mainquit)
    w.add (test())
    w.show_all ()
    gtk.main ()
#!/usr/bin/env python


import pygtk 
import gtk
import gobject

class test (gtk.TreeView):
    def __init__ (self):
        gtk.TreeView.__init__ (self)
        self.init_model ()
        self.init_view_columns ()
        self.connect ('row-activated', self._selected)

    def _selected (self, tv, path, col):
        store, iter = tv.get_selection ().get_selected()

        model = store.get_model()
        model.set_value (iter, 0, 'New value...')
    
    def init_model (self):
        store = gtk.TreeStore (gobject.TYPE_STRING)
        #        self.set_model (store)
        store.append(None, ['Valor inicial'])

        filter = store.filter_new()
        filter.set_visible_func(self._visible_cb)
        self.set_model(filter)

    def _visible_cb(self, model, iter):
        return True

    def init_view_columns (self):
        col = gtk.TreeViewColumn ()
        col.set_title ('Stock Items')
        render_text = gtk.CellRendererText ()
        col.pack_start(render_text, expand=True)
        col.add_attribute (render_text, 'text',0)
        self.append_column (col) 



if __name__ == '__main__':
    w = gtk.Window ()
    w.set_size_request (width = 400, height = 300)
    w.connect ('destroy', gtk.mainquit)
    w.add (test())
    w.show_all ()
    gtk.main ()


[Date Prev][Date Next]   [Thread Prev][Thread Next]   [Thread Index] [Date Index] [Author Index]