[pyar] problema con sleep

Esteban Alejandro Chauque achauque en gmail.com
Vie Feb 4 18:14:39 ART 2011


Muchas gracias! Es exactamente lo que necesitaba.
Si entiendo que gtk esta basado en eventos, pero en este caso
particular mas allá de poder definí cada cuantos mili segundos llamaba
a la función necesitaba generar la demora ya que en el monitor solo
puedo/debo mostrar 5 resultados a la ves y básicamente no tengo ningún
evento que evaluar.
Es para hacer una pantalla tipo aeropuerto que va dando información.


Saludos y muchas gracias

El día 4 de febrero de 2011 15:48, Augusto Roccasalva
<coyotevz en gmail.com> escribió:
> El día Fri, 4 Feb 2011 09:30:47 -0300
> Esteban Alejandro Chauque <achauque en gmail.com> escribió:
>
>> 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)
>>
>
> Deberías dejar que el main loop de gtk "re-dibuje" los labels que acabas de
> modificar.
> En principio si le agregas antes del sleep() un bucle que verifique los eventos
> pendientes y los ejecute debería funcionar.
> De todas maneras como te dice Joaquín no es buena idea meter un sleep() en una
> aplicación manejada por eventos, la aplicación se bloquea mientras se ejecuta la
> funcion sleep() y le quitas la posibilidad a otros eventos (como en este caso
> "re-dibujar" los labels) que se ejecuten.
> Revisá la documentación de funciones como glib.timeout_add(), glib.io_add_watch
> (), glib.idle_add().
>
> El bloque quedaría así:
>
>    if y > 5:
>        y = 1
>        while gtk.events_pending():
>            gtk.main_iteration()
>        time.sleep(2)
>
> Saludos
> --Augusto
> _______________________________________________
> pyar mailing list pyar en python.org.ar
> http://listas.python.org.ar/listinfo/pyar
>
> PyAr - Python Argentina - Sitio web: http://www.python.org.ar/
>



More information about the pyar mailing list