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

Diferenças para "BarraProgresso"

Diferenças entre as versões de 3 e 4
Revisão 3e 2005-07-27 17:28:36
Tamanho: 4590
Comentário:
Revisão 4e 2005-07-27 17:31:14
Tamanho: 0
Comentário: não formatada conforme padrão
Deleções são marcadas assim. Adições são marcadas assim.
Linha 1: Linha 1:
{{{
#-*- 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()
}}}