Olá a Todos, escrevi uma classe em Python que implementa uma janela de barra de progresso usando Tkinter.
Na figura abaixo está a aparência final da barra de progresso.
Aqui vai o exemplo para gerar a imagem acima:
from barra_progresso import * #Classe contendo a barra de progresso
from Tkinter import *
root=Tk()
O = PB(root,500,'Teste')
for i in range(501):
O.Barra(i)
Agora vem o mais importante de tudo, o código fonte contendo a classe PB:
#!/usr/bin/env python
# -*- coding: utf-8 -*-
#Barra de progresso usando Tkinter.
#Copyright 2010 Eduardo S. Pereira.
#Distribuido sobre a licença Lesser General Public License v3.2007
# http://www.gnu.org/copyleft/lesser.txt
from Tkinter import *
class PB:
'''Classe PB - Progress Bar ( Barra de progresso), Abre uma janela em Tkinter
que gera uma barra de progresso.
___init__(self,Win,Tot,Info)
Win:Janela principa
Tot: Numero total de passo no loop
Info: string contendo informacoes sobre o que e calculado no loop
Barra(self,i):
i: Valor atual da posição do loop
Exe:
root=Tk()
O = PB(root,500,'Texte')
for i in range(1000):
O.Barra(i)
'''
def __init__(self,Win,Tot,Info):
'''Win:Janela principal
Tot: Numero total de passo no loop
Info: string contendo informacoes sobre o que e calculado no loop
'''
self.win = Win
self.win.title("Calculando, Aguarde...")
self.win.geometry("500x100+0+0") #Largura de 800 e altura de 50, no offsets
self.F0 = Frame(self.win)
self.F0.pack()
self.L0 = Label(self.F0,text=Info)
self.L0.pack(anchor='nw')
self.L1 = Label(self.F0)
self.L1.pack(anchor='nw')
self.s=""
self.sp=" "
self.F1 = Frame(self.win)
self.F1.pack()
self.L2 = Label(self.F1,text=self.s,bg="blue")
self.L2.pack(anchor='nw')
self.Per = 100./Tot
self.L3=Label(self.F1,text="|"+99*" "+"|")
self.L3.pack(anchor='nw')
self.L4=Label(self.F1,text=" 1%"+96*" "+"100%")
self.L4.pack(anchor='nw')
def Barra(self,i):
x=self.Per*i
self.s=self.sp*int(x)
self.L2.after(10,self.L2.config(text=self.s))
self.L2.update()
self.L1.config(text=5*" "+str(int(x))+'% de Progresso')
def Sair(self):
self.win.destroy()
Espero que seja útil.
Até a próxima.
Nenhum comentário:
Postar um comentário