[Python-es] Dejar hacer
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 http://mail.python.org/mailman/listinfo/python-es FAQ: http://python-es-faq.wikidot.com/
Re: [Python-es] Dejar hacer
2011/2/9 Narcis Garcia - GiLUG 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 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/
Re: [Python-es] Dejar hacer
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/