[Python-es] Dejar hacer

marmolro marmolro en gmail.com
Mie Feb 9 21:37:13 CET 2011


2011/2/9 Narcis Garcia - GiLUG <informatica en actiu.net>

> Hola, estoy diseñando una interfaz con wxPython que enumera una serie de
> computadoras en red, y actualiza su estado.
>
> Por ejemplo:
> Equipo 1: ausente
> Equipo 2: 10%
> Equipo 3: 50%
> Equipo 4: 20%
> etc.
>
> Le he puesto un boton para actualizar el estado (cada consulta tarda su
> tiempo), y esto tiene que servir para unos 30 equipos. Al pulsar
> [Actualizar] hago un recorrido (for Actual in Equipos) para consultar su
> estado y reflejarlo en las etiquetas de texto:
> Indicador.SetLabel("consultando")
> NuevoEstado=EstadoConsultado(Actual)
> Indicador.SetLabel(NuevoEstado)
>
> El problema es que se queda todo congelado hasta que termina todo el
> proceso de toda la lista, y el formulario no cambia hasta el final. Ni
> siquiera se aprecia el "consultando" para cada consulta durante el
> recorrido.
>
> He buscado un equivalente al "DoEvents" de VisualBasic, pero no he
> encontrado nada para Python. ¿Alguien sabe como resolverlo?
>
> Gracias.
> _______________________________________________
> Python-es mailing list
> Python-es en python.org
> http://mail.python.org/mailman/listinfo/python-es
> FAQ: http://python-es-faq.wikidot.com/


Para que se refresque tu parte gráfica tienes que devolverle el control a la
misma. No he hecho nada nunca con wxPython, pero es lo mismo en todos los
frameworks gráficos que conozco. Soluciones hay varias:

   - Implementa la consulta de estado en un thread (o varios) independiente
   y actualiza la parte gráfica mediante eventos (supongo que hay un
   equivalente a signal/slot de KDE para wxPython)
   - Implementa la consulta por partes, devolviendo el control a la gui en
   cata iteración (por ejemplo, por equipos).

Un saludo,
marmolro
------------ próxima parte ------------
Se ha borrado un adjunto en formato HTML...
URL: <http://mail.python.org/pipermail/python-es/attachments/20110209/d9b34375/attachment.html>


Más información sobre la lista de distribución Python-es