[Python] Gtk - ListView - Catturare la selezione di una riga e lanciare una funzione.

Pietro Battiston toobaz a email.it
Dom 2 Maggio 2010 23:06:03 CEST


Il giorno dom, 02/05/2010 alle 19.49 +0200, Marco Fochesato ha scritto:
> Ciao a tutti!
> Ho creato una ListView, e ho fatto in modo che nel momento in cui viene
> selezionata una riga, parta una funzione. Così:
> 
>         treeselection=self.listafornitori.get_selection()
>         treeselection.set_mode(gtk.SELECTION_BROWSE)
>         treeselection.set_select_function(self.stampalistaprodotti,
> iter)
> 
> 
> Funziona tutto a dovere. L'unica noia è che quando clicco su una riga
> della listafornitori, la funzione parte, ma la riga selezionata non
> viene evidenziata.. Sul manuale è scritto che la funzione viene lanciata
> "prima" della selezione della riga.. quindi credo che il processo di
> selezione venga "stoppato" li... 
> Si potrebbe rimediare inserendo nella funzione richiamata un comando che
> mi evidenzi la riga selezionata, e poi proceda con il resto delle cose
> che deve fare..

Capisco male o tu hai una funzione che avendo un tempo di esecuzione
lunghetto blocca la GUI?

Se ho capito bene, la soluzione è semplicemente spostare la funzione dal
main loop: se è facilmente "parcellizzabile", con delle chiamate a
gobject.idle_add, altrimenti con un thread.

Comunque, anche ammettendo che pur di non complicarti la vita tu sia
pronto ad accettare che la GUI diventi unresponsive mentre la tua bella
funzione viene eseguita, gobject.idle_add è comunque la soluzione:
invece di chiamare subito la funzione, dici di eseguirla appena "non c'è
nient'altro da fare".

sempre se non ho capito male, ovviamente

ciao

Pietro



Maggiori informazioni sulla lista Python