(sin asunto)

Rolando José Torres Sánchez rolandojtorres en gmail.com
Mie Oct 18 15:12:05 CEST 2006


> Date: Tue, 17 Oct 2006 12:50:12 +0200
> From: Inigo <imunoz en zylk.net>
> Subject: [Python-es] problema con hilos y tk
> To: python-es en aditel.org
> Message-ID: <4534B564.4000001 en zylk.net>
> Content-Type: text/plain; charset=ISO-8859-1; format=flowed
>
> Hola:
>     Estoy haciendo una aplicación con hilos y tk. Es muy sencillo. El
> hilo lanza una ventana modal con un botón y una etiqueta. En el método
> principal lanza 4 hilos diferentes, con lo que debería abrir 4 ventanas
> diferentes. El caso es que en Linux funciona y en Windows no, algunas
> veces muestra las ventanas pero no muestra ni el botón ni la etiqueta.
> He probado con Wxpython y pasa lo mismo. Copio a continuación el ejemplo:
>
> #!/usr/bin/env python
> import threading
> from Tkinter import *
>
> class OpenWThread(threading.Thread):
>    def __init__(self, string):
>       threading.Thread.__init__(self)
>       self.string = string
>
>    def run(self):
>       root = Tk()
>       Label(root, text=self.string).pack(side=TOP, padx=5, pady=5)
>       Button(root, text="Aceptar",
> command=root.destroy).pack(side=BOTTOM, padx=5, pady=5)
>       root.mainloop()
>
> for i in range(4):
>    t = OpenWThread("prueba "+str(i))
>    t.start()
>
>

Pienso que el problema esta en que el metodo para usar hilos en TCL/TK
es distinto que en python, aqui puedes encontrar mas información de
usar hilos en TCL/TK

http://wiki.tcl.tk/2?Q=Thread

En Linux puede funcionar, porque linux genera cada GUI como un proceso
distinto, es posible que sobre Windows esto no suceda, y se quede
esperando que la aplicacion de la primera ventana termine para
continuar con la siguiente.

proc run {texto win} {
	set v $win
	toplevel .$v
	pack [button .$v.b -text "$texto" ] [label .$v.l -text $texto]
}

set v 0
foreach { texto } { TEXTO  NOTAS  CALCULADORA  PINTAR  }  {
	incr v
	run $texto $v
}
wm withdraw .

Este codigo en TCL/TK funciona sobre Windows, Linux, y Windows Pocket,
genera cuatro botones con los textos TEXTO  NOTAS  CALCULADORA
PINTAR, en ventanas distintas creo que es lo que tu quisieras hacer
con python.


Rolando Jose Torres
TCL/TK inside Python




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