Lanzar procesos desde interfaz Tkinter
Ernesto Revilla
aerd en retemail.es
Vie Jul 11 18:45:01 CEST 2003
Yo lo haría con threads y os.system algo como esto. No está probado.
import threading
class TareasConsecutivas(Thread):
def run(self,...)
os.system("bla")
os.system("blabla")
tareas=TareasConsecutivas()
import Tkinter
root=Tkinter.Tk()
button=Tkinter.Button(root,"Hola",command=tareas.start)
root.mainloop()
Importante:!!!!!!
Todos los elementos que creas en Tkinter lo tienes que crear desde la hebra (thread) principal, de lo contrario casca. Si quieres mostrar el progreso en alguna ventana, termómetro o lo que sea, tienes que comunicar la hebra secundaria con la principal mediante algún mecanismo (el objecto Queue viene muy bien para esto). Puedes utilizar el 'after' de Tkinter para programar tareas periódicas, es decir, cada x tiempo (ej. 100 ms) compruebas si hay algo en la cola para mostrarlo.
erny
----- Original Message -----
From: Gema Núñez Blázquez
To: Python-es en aditel.org
Sent: Friday, July 11, 2003 12:00 PM
Subject: [Python-es] Lanzar procesos desde interfaz Tkinter
Tengo que hacer un proceso en Python que tiene interfaz gráfica y me ha surgido un problema Explico en que consiste el proceso:
Hay un bat que tiene una serie de comandos pero Jaime quiere que ese proceso sea más vistoso y vaya saliendo en una interfaz los pasos que va haciendo, por ejemplo
Paso 1: ....
Paso2: ....
Bien, hasta ahi porque creo la interfaz y voy lanzando los distintos procesos con la orden os.spanwn(os.P_WAIT,...) de Python puesto que hasta que no finalize ese proceso no puedo continuar con el siguiente.
Mi problema es que la ventana de la interfaz se queda bloqueada y hasta que no retorna del proceso que he lanzado no me deja interactuar con ella (no se refesca y se queda en negro como si lanzase el proceso en modal). La pregunta es: ¿lo estoy enfocando bien?¿Hay alguna forma para que aun estando ejecutando el proceso de DOS lanzado yo pueda retornar a mi ventana de python y pueda ver lo que hay escrito hasta el momento en ella?
He probado con os.system(..) y tampoco, habia pensado en usar P_NOWAIT y espera a que finalice con os.waitpid o wait pero esas funciones solo valen en Unix y esto corre en Windows.
Ante todo gracias por la ayuda.
Un saludo
------------------------------------------------------------------------------
Yahoo! Messenger
Nueva versión: Super Webcam, voz, caritas animadas, y más ¡Gratis!
------------------------------------------------------------------------------
_______________________________________________
Python-es mailing list
Python-es en aditel.org
http://listas.aditel.org/listinfo/python-es
------------ próxima parte ------------
Se ha borrado un adjunto en formato HTML...
URL: <http://mail.python.org/pipermail/python-es/attachments/20030711/70628bf9/attachment.html>
------------ próxima parte ------------
_______________________________________________
Python-es mailing list
Python-es en aditel.org
http://listas.aditel.org/listinfo/python-es
Más información sobre la lista de distribución Python-es