[LoaderTk] Compartiendo código.

Iniciado por $francisco, Febrero 23, 2015, 06:09:36 PM

Tema anterior - Siguiente tema

0 Miembros y 1 Visitante están viendo este tema.

Febrero 23, 2015, 06:09:36 PM Ultima modificación: Febrero 26, 2015, 10:15:16 PM por Gabriela
Muy buenas, ya hacia un poco de tiempo no utilizaba python e hice un cargador y quiero compartir lo con ustedes.

loaderTk.py

Código: python
import mtTkinter as Tkinter
import ttk,time,threading,Image,ImageTk,tkMessageBox,Queue

#Tk
MAXCOUNT = 100
IMAGE_LABEL = 'anonymous.jpg'

#messageBox
MESSAGE = "proceso terminado"
TITLE = "completado"

class changeState(threading.Thread):
def __init__(self,value,progres,label,msg):
threading.Thread.__init__(self)
self._value = value
self._progres = progres
self._label = label
self._msg = msg

def run(self):
self._progres["value"] = self._value
self._label.set(str(self._value)+"%")
if self._value == MAXCOUNT:self._msg()

class windowLoader(Tkinter.Tk):
def __init__(self):
Tkinter.Tk.__init__(self)
self.geometry("400x400")
lista = ("createImage","label","progresbar")
for i in lista:
getattr(self,i)()

def label(self):
self.v = Tkinter.StringVar()
self.v.set("0%")
label_1 = Tkinter.Label(self,image=self.image)
label_1.pack(fill=Tkinter.BOTH,expand=True)

label_2 = Tkinter.Label(label_1,textvariable=self.v)
label_2.pack(side="bottom")

def msg(self):
msgbox = tkMessageBox.showinfo(TITLE,MESSAGE)
self.quit()

def change(self,value):
state = changeState(value,self.progres,self.v,self.msg)
state.daemon = True
state.start()

def createImage(self):
openImage = Image.open(IMAGE_LABEL)
self.image = ImageTk.PhotoImage(openImage)

def progresbar(self):
self.progres = ttk.Progressbar(self,length=1,maximum=MAXCOUNT)
self.progres.pack(fill=Tkinter.X)

class threadLoader(threading.Thread):
def __init__(self,q):
threading.Thread.__init__(self)
self.q = q

def run(self):
root = windowLoader()
self.q.put(root)
root.mainloop()


def loader():
q = Queue.Queue()
call = threadLoader(q)
call.start()
instance = q.get()
return instance



ejemplo:

Código: python
import loaderTk

loader = loaderTk.loader()

for i in range(100):
loader.change(i+1)
time.sleep(0.1)


Bueno, se puede mejorar pero ahí, se los dejo.

Hola, buen día.

Una duda que me surgió al leer el código (sinceramente a la rápida), es que usaste lista (tupla) en vez de array... No digo que no funcione, pero
¿ Por qué ?

Saludos.
No tienes permitido ver los links. Registrarse o Entrar a mi cuenta

se me paso por alto ese detalle  ;D digamos que se llama array o tupla.

No tienes permitido ver los links. Registrarse o Entrar a mi cuenta
se me paso por alto ese detalle  ;D digamos que se llama array o tupla.
Está bien, el for de Python, itera lo que le pases jajajaja.

Saludos.
No tienes permitido ver los links. Registrarse o Entrar a mi cuenta