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 ()