#-*- 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()