.

Traduzir

domingo, 11 de julho de 2010

Barra de progresso com Tkinter.

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