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

Revisão 1e 2005-07-27 17:24:46

Excluir mensagem

BarraProgresso

# 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

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

*** Como usar ***

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

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