[pyar] problema con sleep

Joaquin Sorianello soriasoft en gmail.com
Vie Feb 4 11:58:54 ART 2011


2011/2/4 Wuelfhis Asuaje <wasuaje en hotmail.com>:
>
> Buen día, tengo el siguiente código que al parecer no esta actuando de
> forma adecuada. Aplica siempre el time.sleep, sin importar la
> condición de y > 5. Yo necesito mostrar los 5 primeros resultados y
> luego los próximos 5 y así sucesivamente hasta terminar de recorrer el
> array, pero me realiza todas las esperas y al final me muestra los
> últimos resultados
> Alguien se le ocurre que puede estar mal?
>
>     def charge_list_info (self, data=None):
>         self.my.setString("spTableroOnLine")
>         self.arrInfo = self.my.dbData2Lists()
>         y = 1
>         for data in self.arrInfo:
>             self.builder.get_object('lblMq%s'%y).set_label(data[2])
>             self.builder.get_object('lblInf%s'%y).set_label(data[3] +
> ' ' + data[4] + chr(13) + data[10])
>             y = y + 1
>             if y > 5:
>                 y = 1
>                 time.sleep(2)
>
>
>
> Bueno yo extraje parte del codigo y lo reescribi asi
>
> import time
> y = 1
> for x in range(100):		
> 	print y
> 	y = y + 1
> 	if y > 5:
> 		y = 1
> 		time.sleep(2)
>
>
>
> Y funciona como lo esperamos cada 5 ciclos un pause de 2 segundos, chequea
> tu main() o __init__

Esto es valido solo en una app de consola, segun lo que se ve en su
código, esta haciendo una aplicación gráfica.
En este caso, creo que tendría que tener un generador y un timer, la
mayoría de los toolkits tienen eso.

 def charge_list_info (self, data=None):
        self.my.setString("spTableroOnLine")
        self.arrInfo = self.my.dbData2Lists()
        y = 1
        for data in self.arrInfo:
            self.builder.get_object('lblMq%s'%y).set_label(data[2])
            self.builder.get_object('lblInf%s'%y).set_label(data[3] +
' ' + data[4] + chr(13) + data[10])
            y = y + 1
            if y > 5:
                y = 1
                 yield True  #time.sleep(2)
        return False

y despues
si es pygtk:

gobject.timeout_add(2000, self.charge_list_info())

----------------------
si es pyqt:

timer = QTimer()
connect(timer, SIGNAL(timeout()), this, SLOT(foo.charge_list_info()))
timer->start(1000)

(Aproximadamente, seguramente hay que masticar y digerir un poco el código)
-- 
Joaquín Sorianello

Sea libre, use software libre



More information about the pyar mailing list