[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.
You are not allowed to view links. You are not allowed to view links. Register or Login or You are not allowed to view links. Register or Login

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

You are not allowed to view links. You are not allowed to view links. Register or Login or You are not allowed to view links. Register or Login
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.
You are not allowed to view links. You are not allowed to view links. Register or Login or You are not allowed to view links. Register or Login