Python - Problema con Pygtk y una clase Timer

 
Vista:

Problema con Pygtk y una clase Timer

Publicado por Cesar (1 intervención) el 18/02/2011 04:41:23
Hola, he estado trabajando en Python y PyGTK, me parecvio realmente facil, y quise hacer un pequeño timer, para ello use una clase Timer que hereda de threading.Thread y tiene dentro un metodo al cual se le pasan los segundos y una referencia a un gtk.Entry
Una clase Ventana, maneja la ventana en si, y alli se crea el Entry, que luego es pasado hacia el Timer, para que el timer setee el texto del Entry escribiendo el numeero.
Lo que sucede es que la Ventana al generarse espera hasta que el timer termine su recorrido, y luego se muestra todo en ella con el ultimo numero de la secuencia...
espero puedan ayudarme...
anexo la clase timer

#!/usr/bin/env python
import gtk
import pygtk
import time
import threading

class Clock(threading.Thread):
def __init__(self):
threading.Thread.__init__(self); self.__encender=1;

def reloj_main(self,timer, ventana):
self.a=self.__encender
for i in range(timer):
if (self.a==1):
print i
ventana.set_text(str(i))
time.sleep(1)
else :
return

def set_encender(self, i):
self.__encender=i


y la clase Ventana

#!/usr/bin/env python
import gtk
import pygtk
import time
from reloj import Clock

class Ventana(object):

def __cerrar_ventana(self, widget, data=None):
gtk.main_quit()


def __init__(self):
self.__clock = Clock()
self.ventana = gtk.Window()
self.caja= gtk.HBox()
self.mostrador= gtk.Entry()
self.mostrador.set_text("contando")
self.boton_squash= gtk.Button("squash tomato")
self.ventana.connect("delete_event", self.__cerrar_ventana)
self.boton_squash.connect("clicked", self.__squash)


self.caja.pack_start(self.mostrador, True, True, 10)
self.boton_squash.show()
self.caja.pack_start(self.boton_squash, True, True, 10)
self.mostrador.show()
self.caja.show()
self.ventana.add(self.caja)

self.__clock.start()
self.__clock.reloj_main(10, self.mostrador)
self.ventana.show()


def __squash(self, widget):
self.__clock.set_encender(0)
self.mostrador.set_text("Done")
print "Reloj Detenido"


def clock(self):
#self.mostrador.set_overwrite_mode(True)
#for i in range(25):
#time.sleep(1)
# print i
#self.mostrador.set_text(str(i))
#time.sleep(1)
self.a=self.mostrador
self.__clock.reloj_main(25,self.a)


def main():
gtk.main()
return 0

if __name__=='__main__':
x= Ventana()
main()
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder