Barra de Progreso

Gabriel Genellina gagsl-py en yahoo.com.ar
Mar Feb 13 20:31:34 CET 2007


En Tue, 13 Feb 2007 14:57:42 -0300, Jacob Nuñez Garcia  
<tux_in_my_heart en hotmail.com> escribió:


> Aqui se ve mejor el script (Bueno eso creo)

(Sí, el mensaje anterior no se podia leer nada!)
Yo trataria de emprolijarlo un poco.

> import threading
> import gobject
> import gtk
> import os
> gobject.threads_init()
> class MyThread(threading.Thread):

(Uhmm... podrias buscar un mejor nombre que MyThread, no?)

>     def __init__(self, label):
>         super(MyThread, self).__init__()
>         self.pb = pb
>         self.w = w
>         self.quit = False

pb y w son variables globales - no parece muy bueno.
w no se usa para nada. pb sería el argumento "label", que no se usa ahora,  
pero que mas abajo se le esta pasando.
self.quit no tiene ninguna utilidad.

>    def update_pb(self, counter):
>         percent=(self.counter) / float(self.size)
>         self.pb.set_fraction(percent)
>         self.pb.set_text('Completado: %i'%(percent*100))
>         return False

Usa self.counter para las cuentas, pero lo recibe como argumento?
Como de cualquier modo requiere tambien self.size, yo eliminaria el  
argumento.

>    def run(self):
>        file1='in.zip'
>        file2='out.zip'
>        file_object = open(file1, 'rb')
>        file_dest = open(file2, 'wb')
>        self.size=os.path.getsize(file1)
>        self.counter=0
>        while 1:
>          chunk = file_object.read(8042)

Algun motivo para usar 8042 exactamente, y no 8000, u 8192, u 8888?

>          self.counter=self.counter + len(chunk)
>          if not chunk: break
>          file_dest.write(chunk)
>          gobject.idle_add(self.update_pb, self.counter)
>       file_object.close()
>        file_dest.close()

Aca faltaria todo el manejo de excepciones; y el open/close usualmente van  
apareados con try/finally (o bien usando el with de Python 2.5)
Entiendo que esto tiene algun uso especifico, pero dejarlo atado a los  
nombres "in.zip" y "out.zip" dentro mismo del metodo que hace la copia  
seria demasiado. Seria bueno poder especificar ambos nombres al momento de  
construir el objeto.

>        gtk.main_quit()
No se muy bien como se manejan estas cosas en gtk, pero parece un poco  
extraño que un thread de trabajo sea el que decide cuando debe terminar la  
aplicacion. (Usualmente, un "empleado" le dice a su "jefe" que termino de  
hacer su trabajo, y su "jefe" decide qué hacer en base a eso, no es el  
"empleado" quien decide).
Del codigo que viene despues no opino porque parece ser todo gtk y no lo  
conozco.

-- 
Gabriel Genellina

------------ 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