ciao a tutti,
provo a porre quì un quesito che riguarda (py)qgis;
volevo prevedere in un plugin, durante il trattamento di layer di
dimensione importante, la stampa di un contatore per dare all'utente il
senso dell'esecuzione in corso, a mò di progress bar; mi scontro però
con un comportamento, per me inatteso, del comando in oggetto;
mi aspettavo dall'esecuzione dei comandi (verificabile anche da console
python):
i = 0
for f in layer.getFeatures():
i +=1
print i
una visualizzazione progressiva (ho controllato di non aver posto una
virgola in fondo al comando print); invece sembra che il ciclo FOR
catturi il sistema e solo alla fine vi è la stampa quasi immediata di
tutta la sequenza;
sto sbagliando qualcosa senza accorgermene ?
grazie, ciao,
giuliano
ciao Matteo e Salvatore,
rspondo quì ad entrambi perchè spero si capisca lo stesso senza
duplicare traffico (e senza infrangere qualche regola di buona
educazione, spero) 
Il giorno Sat, 19 Apr 2014 08:19:06 +0100 (BST)
Matteo De Stefano <matteo_destefano@yahoo.it> ha scritto:
.....
ma in effetti comunque il tuo ciclo dovrebbe comportarsi come un
normale ciclo for,.....
...... La progress bar che avevi in mente servirebbe solo
per contare il numero delle features, durante un'operazione di
conteggio delle stesse? questo perchè layer.featureCount() quando
provi a lanciarlo su un layer molto corposo è troppo lento? E la bar
servirebbe a mostrare che il lavoro di conteggio procede? ....
mi serve a dare all'utente indicazione dello stato di svolgimento del
lavoro e uso anche featureCount(): vorrei fornire l'informazione
xxxxx(fatti)/yyyyy(totali); per evitare le complessità dell'uso di un
widget che conosco poco mi limitavo ad usare un print nella console;
Il giorno Sat, 19 Apr 2014 10:18:41 +0200
Salvatore Larosa <lrssvtml@gmail.com> ha scritto:
.....
> .....
eseguendo il codice nella console python di QGIS, tu dovresti vedere
ogni singolo
elemento del layer, in modo continuo, senza aspettare la fine del
ciclo.
ed invece no, almeno per le prove che ho fatto (spero senza sbagliare);
..... basta sostituire il "print" con "emit()". Puoi definire un
metodo che aggiorni la tua barra progressiva poi nel ciclo richiami
il segnale connesso al metodo. Dovrebbe funzionare!
non lo conoscevo, mi documenterò e proverò, grazie 
Buona Pasqua!
per ricambiare credo sia un pò troppo tardi, comunque vi ringrazio
tantissimo per la cortesia che avete avuto, ciao,
giuliano
Il giorno Sat, 19 Apr 2014 10:18:41 +0200
Salvatore Larosa <lrssvtml@gmail.com> ha scritto:
Ciao Giuliano,
ciao Salvatore,
e scusa se (ri)rompo, ma pensavo di aver capito e invece.....
...... basta sostituire il "print" con "emit()".
la semplice sostituzione di emit() al print mi dà:
"NameError: name 'emit' is not defined";
ho guardato un pò meglio ed ho visto che il comando è collegato con
oggetti / segnali / slot, ma non riesco a individuare l'oggetto/segnale
da interrogare: la mia necessità è semplicemente quella di stampare una
variabile autoincrementante all'interno di un loop per documentarne lo
stato: qualche altro hint ?
(ho provato ad eseguire il loop sul dataProvider anzichè sul layer, ma
il comportamento sembra identico 
grazie mille, ciao,
giuliano