Quiero detectar cada vez que la selección de mi gtk.TreeView
cambia y, cuando lo hace, llamar a una función con esta información. La única manera que he encontrado para hacerlo hasta ahora es unir a todas estas señales:Obtener una nueva selección en un GtkTreeView durante la señal
...
self.sitterView.connect("cursor-changed", self.selectionChanged)
self.sitterView.connect("unselect-all", self.selectionChanged)
self.sitterView.connect("toggle-cursor-row", self.selectionChanged)
self.sitterView.connect("select-all", self.selectionChanged)
...
def selectionChanged(self, treeview):
foo(self.sitterView.get_selection().get_selected())
Sin embargo, parece que la selección que recibo de la devolución de llamada es "retardada". Es decir, muestra la selección después de que se completó la devolución de llamada anterior. Por ejemplo, si constantemente CTRL + clic en una fila, cuando la fila va de deseleccionada a seleccionada, foo no recibe ninguna selección, y cuando la fila va de seleccionada a no seleccionada, se le da una selección. Si llamo al get_selection().get_selected()
un segundo después, sin embargo, obtengo la selección correcta. ¿Alguna idea de cómo lidiar con esto?
¡oh increíble! No me di cuenta de que el objeto de selección no cambiaría y que tenía señales propias. Creo que eso es lo que estoy buscando. – Claudiu
funciona de maravilla, de nuevo – Claudiu
¿Hay alguna forma de conectar esta señal desde Glade? – umpirsky