Ver Mensaje Individual
  #1 (permalink)  
Antiguo 02/08/2010, 21:31
Nano-rosario
 
Fecha de Ingreso: abril-2008
Mensajes: 68
Antigüedad: 16 años, 7 meses
Puntos: 0
Thead wxpython

Bueno, tengo un formulario con una lista, cuando se va selecionando los distintos items, se corre la funcion x esta llama a otra funcion load_Fotos que esta llama a download. Esta ultima baja unos archivos de la web, lo cual tarda, por eso hasta que no termina no devuelve el control del programa.
Tendria que crear un thread verdad? para correr la funcion download, cual seria la manera correcta. estas son las funciones.

Código:
def x(self):
        self.Foto.Load_Fotos(art.Foto)
Código:
    def Load_Fotos(self,fotos):
        paneles = [self.Foto,self.Foto1,self.Foto2,self.Foto3]
        for p in paneles:
            p.pic = self.il.NOPIC
        bi = wx.BusyInfo("Cargando imagenes, espere por favor...")
        for i,f in enumerate(fotos):
            dir = md.Func.download(f)
            if dir != False:
                if i == 0:
                    self.Load_Foto(self.Foto1, dir)
                if i == 1:
                    self.Load_Foto(self.Foto2, dir)
                if i == 2:
                    self.Load_Foto(self.Foto3, dir)
        self.Foto.pic = self.Foto1.pic
        self.Refresh()
        bi.Destroy()
Código:
def download(url):
    import urllib
    try:
        image = urllib.URLopener()
        name = url.split('/')[-1]
        dir = c.TmpPath + name
        image.retrieve(url,dir)
        return dir
    except: 
        return False
osea en vez de tener el wx.busyinfo me gustaria tener el control del programa.
Saludos y muchas gracias