Underc0de - La Casa de los Informáticos

Programación Scripting => Python => Mensaje iniciado por: $francisco en Febrero 23, 2015, 06:09:36 PM

Título: [LoaderTk] Compartiendo código.
Publicado por: $francisco en Febrero 23, 2015, 06:09:36 PM
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) [Seleccionar]
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) [Seleccionar]
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.
Título: Re:[LoaderTk] Compartiendo código.
Publicado por: JaAViEr en Marzo 04, 2015, 08:57:13 AM
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.
Título: Re:[LoaderTk] Compartiendo código.
Publicado por: $francisco en Marzo 05, 2015, 07:00:03 PM
se me paso por alto ese detalle  ;D digamos que se llama array o tupla.
Título: Re:[LoaderTk] Compartiendo código.
Publicado por: JaAViEr en Marzo 07, 2015, 03:53:09 PM
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.