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