[Python-es] Dudas sobre thread, entronización y Tkinter

Jhonatan Sneider Salguero Villa sney2002 en gmail.com
Vie Nov 18 17:03:16 CET 2011


hola, primero que nada gracias por toda la información que comparten aquí,
me ha servido mucho.

nunca he hecho un programa con gui (ni threads), así que para aprender
he decidido crear una
interfaz (con Tkinter) para un script que descarga de megaupload.

Mas que un problema es una serie de dudas sobre si lo que estoy
haciendo es correcto
o hay una mejor forma.

por el momento me surgen dos dudas:

1) para sincronizar los threads uso Queue, pero:
- debo usar varias queue por cada parte de la interfaz a actualizar. o
usar algo como:
(msg, args) => ("actualizar-barraprogreso", 20)
o
(funcion, args)

según su experiencia que me recomiendan.

2) para terminar el thread de descargas uso flags:
- debo verificar esta en todos los loops que tarden demasiado o hay
una mejor forma de hacerlo.

3) a la hora de cerrar la aplicación el código que uso es el siguiente:

def on_delete_window():
	try:
		root.destroy()
	except:
		pass
	finally:
		print "destruyendo"
		gui.worker.stop()
		gui.worker.join()
		print "destruido"
	
root.protocol("WM_DELETE_WINDOW", on_delete_window)

así la ventana se cierra pero el programa sigue activo mientras
termina el thread de descarga.
no se si esto esta bien o debería cerrar la ventana solo después que
el thread a terminado.

Muchas gracias por su atención.


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