En Trabajando con GtkTreeView en Python explicaba como utilizar el complejo pero versatil widget GtkTreeView. Sin embargo, faltaba un detalle importante: ¿como usar selección múltiple?
Lo primero es poner el selector del GtkTreeView en modo de selección múltiple:
treeview.get_selection().set_mode(gtk.SELECTION_MULTIPLE)
Ahora ya podremos marcar más de una fila simultáneamente usando las teclas Mayúsculas y Control.
Leer los elementos marcados es tan sencillo como obtener primero el iterador y el arbol:
tree,iter = self.z88tree.get_selection().get_selected_rows()
Si el iterador es None, no hay ninguna fila seleccionada, pero si lo está, no tenemos más que recorrer los elementos del iterador para acceder a las filas. Con ellas, podemos usar el método get_value del arbol para obtener el valor de cada una.
En este ejemplo almacenamos en la lista ret el valor de la columna cero de cada fila seleccionada:
ret = [] for item in iter: ret.append(tree.get_value(tree.get_iter(item),0))
Fácil, fácil, para toda la familia.
Selección multiple por A cuadros está licenciado bajo una Licencia Creative Commons Atribución-CompartirIgual 4.0 Internacional.
> Me gustaria saber como se hace para que luego de ejecutar el signal
> handler de la seleccion de items, el treeview continue mostrandolos
> como seleccionados.
> En mi caso sucede que una vez que pico el boton derecho la seleccion
> se rompe.
La manera de hacerlo es capturar el evento BUTTON-PRESS-EVENT en el TREEVIEW, y si es el botón derecho, hacer lo que se quiera (por ejemplo mostrar un menú emergente) y devolver TRUE para que el evento no siga propagándose.