Supongo que la asincronía es la clave para hacerlo bién.
Ahora he encontrado el método Update() aplicable a todos los objetos gráficos, y me sirve para la actualización manual (no funciona al abrir el programa).

No sé cómo se devuelve el control a la GUI.
Supongo que me acabaré mirando lo de los hilos/tareas asíncronas.

Gracias.


Al 09/02/11 21:37, En/na marmolro ha escrit:


2011/2/9 Narcis Garcia - GiLUG <informat...@actiu.net
<mailto:informat...@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@python.org <mailto:Python-es@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



_______________________________________________
Python-es mailing list
Python-es@python.org
http://mail.python.org/mailman/listinfo/python-es
FAQ: http://python-es-faq.wikidot.com/
_______________________________________________
Python-es mailing list
Python-es@python.org
http://mail.python.org/mailman/listinfo/python-es
FAQ: http://python-es-faq.wikidot.com/

Responder a