associação pythonbrasil[11] django zope/plone planet Início Logado como (Entrar)

Diferenças para "BarraProgresso"

Diferenças entre as versões de 1 e 3 (2 versões de distância)
Revisão 1e 2005-07-27 17:24:46
Tamanho: 4567
Comentário:
Revisão 3e 2005-07-27 17:28:36
Tamanho: 4590
Comentário:
Deleções são marcadas assim. Adições são marcadas assim.
Linha 1: Linha 1:
{{{
Linha 88: Linha 89:
}}}
Linha 89: Linha 91:
*** Como usar *** == Exemplo de uso ==
Linha 91: Linha 93:
{{{
Linha 146: Linha 149:
}}}

#-*- encoding: utf8 -*-

##
# Esse programa é livre, você pode distribuir e/ou modifica-lo sob os
# termos da licença geral publica GNU publicada pela fundação de software
# livre (Free Software Foundation),  contida na segunda versão da licença
# ou (em sua opinião) outra versão mais recente.
# Esse programa é distribuído na esperança de ser útil e satisfatório,
# mas DESTITUÍDO DE QUALQUER GARANTIA, destituído igualmente da
# COMPATIBILIDADE DE MÁQUINA ou CONVENIÊNCIA PARA PROPÓSITOS
# PARTICULARES. Veja a licença geral publica GNU para opter mais detalhes.
# http://www.gnu.org/copyleft/gpl.html
##

###############################################################################
## Nome do Arquivo: utilitario
## Autor: Guedes, Maurilio<billguedes>
## Data da Criação: 26/07/2005
## Data da Modificação: 26/07/2005
## Finalidade: Mostrar uma barra de progresso
##
##
##
###############################################################################

import pygtk
pygtk.require('2.0')
import gtk, gobject

class BarraProgresso:

        def __init__(self):
                self.texto= "";
                self.registro= 1;
                self.total_registro= 500;
                
        def desenhar(self):
                
                # Cria uma janela comum
#               self.janela = gtk.Window()
#               self.janela = gtk.Window(gtk.WINDOW_TOPLEVEL)
                self.janela = gtk.Window(gtk.WINDOW_POPUP)
                self.janela.set_resizable(False)
                self.janela.connect("destroy", self.fechar_janela)
                self.janela.set_title("Barra de Progresso")
                self.janela.set_border_width(0)
                self.janela.set_position(gtk.WIN_POS_CENTER)

                # Cria uma caixa vertical
                vbox = gtk.VBox(False, 5)
                vbox.set_border_width(10)
                self.janela.add(vbox)

                # Cria uma barra de progresso
                self.barra_progresso = gtk.ProgressBar()
                vbox.pack_start(self.barra_progresso, False, False, 0)
                
                # Chamar o método desenhar_progresso a da 100 milisegundos
                self.tempo = gobject.timeout_add(5, self.desenhar_progresso, self.barra_progresso)

                # Cria uma separador
                separador = gtk.HSeparator()
                vbox.pack_start(separador, False, False, 0)

                # Cria uma etiqueta
                self.etiqueta= gtk.Label()
                self.etiqueta.set_label(self.texto)
                vbox.pack_start(self.etiqueta, False, False, 0)
                
                # Mostra todas os widgets adicionados na janela
                self.janela.show_all()
                
        def escrever_texto(self, widget= None):
                self.etiqueta.set_label(self.texto)
                
        def desenhar_progresso(self, widget= None):
                self.escrever_texto()
                valor= (float(self.registro) / self.total_registro)
                if valor >= 1: self.fechar_janela()
                self.barra_progresso.set_fraction(valor)
                self.barra_progresso.set_text("%.2f%%" % (valor * 100))
                return True
                
        def fechar_janela(self, widget= None):
                gobject.source_remove(self.tempo)
                gtk.main_quit()

Exemplo de uso

#-*- encoding: utf8 -*-

##
# Esse programa é livre, você pode distribuir e/ou modifica-lo sob os
# termos da licença geral publica GNU publicada pela fundação de software
# livre (Free Software Foundation),  contida na segunda versão da licença
# ou (em sua opinião) outra versão mais recente.
# Esse programa é distribuído na esperança de ser útil e satisfatório,
# mas DESTITUÍDO DE QUALQUER GARANTIA, destituído igualmente da
# COMPATIBILIDADE DE MÁQUINA ou CONVENIÊNCIA PARA PROPÓSITOS
# PARTICULARES. Veja a licença geral publica GNU para opter mais detalhes.
# http://www.gnu.org/copyleft/gpl.html
##

###############################################################################
## Nome do Arquivo: teste.py
## Autor: Guedes, Maurilio<billguedes>
## Data da Criação: 26/07/2005
## Data da Modificação: 27/07/2005
## Finalidade: Testar o uso do arquivo minhabarra.py
##
##
##
###############################################################################

import pygtk
pygtk.require('2.0')
import gtk
import minhabarra

class Principal:
        
        def __init__(self):
                janela= gtk.Window()
                janela.connect("destroy", gtk.main_quit)
                botao= gtk.Button("Executar")
                botao.connect("clicked", self.executar)
                janela.add(botao)
                janela.show_all()
                
        def executar(self, widget= None):
                barra= minhabarra.BarraProgresso()
                barra.texto= "Começando o Processo..."
                barra.registro= 0
                barra.total_registro= 300
                barra.desenhar()

                for i in range(barra.total_registro):
                        print "Estou no for imprimindo %s\n" % i
                        barra.texto= "Estou Processando o Cliente '%05d'" % barra.registro
                        barra.registro+= 1
                        gtk.mainiteration()
                        
p= Principal()
gtk.main()