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 9 (8 versões de distância)
Revisão 1e 2005-07-27 17:24:46
Tamanho: 4567
Comentário:
Revisão 9e 2005-07-27 18:38:14
Tamanho: 6135
Comentário:
Deleções são marcadas assim. Adições são marcadas assim.
Linha 1: Linha 1:
#pragma section-numbers off
= Receita: Barra de Progresso para Uso Geral =

Essa barra de progresso é para uso geral como: Adicionar registros no gtk.treeview e/ou Adicionar colunas no reportlab

== Código ==

{{{
#!python
Linha 16: Linha 25:
## Nome do Arquivo: utilitario ## Nome do Arquivo: minhabarra
Linha 19: Linha 28:
## Data da Modificação: 26/07/2005 ## Data da Modificação: 27/07/2005
Linha 31: Linha 40:
 '''Classe principal'''
Linha 33: Linha 43:
  '''Incialização padrão'''
  
Linha 38: Linha 50:
  '''Desenha os widgets'''
Linha 58: Linha 71:
  # Chamar o método desenhar_progresso a da 100 milisegundos   # Chamar o método desenhar_progresso a da 5 milisegundos
Linha 74: Linha 87:
  '''Escreve o texto na etiqueta'''
  
Linha 77: Linha 92:
  '''Desenha ou atualiza a barra de progressso'''
  
Linha 78: Linha 95:
     # Calculo flacionário para adequação da barra de progresso
Linha 79: Linha 98:
      # Caso seja 1 ou maior (100%) feche a tela
Linha 80: Linha 101:
  self.barra_progresso.set_fraction(valor)       # Valor válido 0.0 à 1.0
self.barra_progresso.set_fraction(valor)        # Exibe a porcentagem
Linha 85: Linha 110:
  '''Fecha o aplicativo'''
  
  # Remove a função relativa ao tempo (Timer)
Linha 87: Linha 115:
    *** Como usar ***
}}}

== Exemplo de uso ==

{{{
#!python
Linha 122: Linha 152:
 '''Classe principal'''
Linha 124: Linha 155:
  '''Incialização padrão'''
  
  # Cria uma janela
Linha 126: Linha 160:
     # Cria um botão
Linha 129: Linha 165:
     # Mostra todas os widgets adicionados na janela
Linha 132: Linha 170:
  '''Executa o código abaixo'''
  
  # Carrega a classe 'BarraProgresso'
Linha 134: Linha 175:
     # Muda a variável registro da classe 'BarraProgresso'
Linha 135: Linha 178:
  barra.total_registro= 300      # Muda a variável total_registro da classe 'BarraProgresso'
  barra.total_registro= 15000
  
  # Desenha os widgets da classe 'BarraProgresso'
Linha 138: Linha 185:
  # Loop ilustrativo, mas poderia ser uma lista de clientes
Linha 139: Linha 187:
       # Depuração do código
Linha 140: Linha 190:
       # Mostra mais informação ao usuário
Linha 141: Linha 193:
       # Muda novamente a variavel registro, ou melhor, acrescenta +1 na variável
Linha 142: Linha 196:
       # Pausa o processo e espera a execução do "Timer"
Linha 144: Linha 200:
# Chama a classe 'Principal'
Linha 145: Linha 202:

# Inicia o aplicativo
Linha 146: Linha 205:

}}}

----
Guedes, Maurilio <billguedes.python at terra.com.br>

Volta para CookBook.

Receita: Barra de Progresso para Uso Geral

Essa barra de progresso é para uso geral como: Adicionar registros no gtk.treeview e/ou Adicionar colunas no reportlab

Código

   1 #-*- encoding: utf8 -*-
   2 
   3 ##
   4 # Esse programa é livre, você pode distribuir e/ou modifica-lo sob os
   5 # termos da licença geral publica GNU publicada pela fundação de software
   6 # livre (Free Software Foundation),  contida na segunda versão da licença
   7 # ou (em sua opinião) outra versão mais recente.
   8 # Esse programa é distribuído na esperança de ser útil e satisfatório,
   9 # mas DESTITUÍDO DE QUALQUER GARANTIA, destituído igualmente da
  10 # COMPATIBILIDADE DE MÁQUINA ou CONVENIÊNCIA PARA PROPÓSITOS
  11 # PARTICULARES. Veja a licença geral publica GNU para opter mais detalhes.
  12 # http://www.gnu.org/copyleft/gpl.html
  13 ##
  14 
  15 ###############################################################################
  16 ## Nome do Arquivo: minhabarra
  17 ## Autor: Guedes, Maurilio<billguedes>
  18 ## Data da Criação: 26/07/2005
  19 ## Data da Modificação: 27/07/2005
  20 ## Finalidade: Mostrar uma barra de progresso
  21 ##
  22 ##
  23 ##
  24 ###############################################################################
  25 
  26 import pygtk
  27 pygtk.require('2.0')
  28 import gtk, gobject
  29 
  30 class BarraProgresso:
  31         '''Classe principal'''
  32 
  33         def __init__(self):
  34                 '''Incialização padrão'''
  35                 
  36                 self.texto= "";
  37                 self.registro= 1;
  38                 self.total_registro= 500;
  39                 
  40         def desenhar(self):
  41                 '''Desenha os widgets'''
  42                 
  43                 # Cria uma janela comum
  44 #               self.janela = gtk.Window()
  45 #               self.janela = gtk.Window(gtk.WINDOW_TOPLEVEL)
  46                 self.janela = gtk.Window(gtk.WINDOW_POPUP)
  47                 self.janela.set_resizable(False)
  48                 self.janela.connect("destroy", self.fechar_janela)
  49                 self.janela.set_title("Barra de Progresso")
  50                 self.janela.set_border_width(0)
  51                 self.janela.set_position(gtk.WIN_POS_CENTER)
  52 
  53                 # Cria uma caixa vertical
  54                 vbox = gtk.VBox(False, 5)
  55                 vbox.set_border_width(10)
  56                 self.janela.add(vbox)
  57 
  58                 # Cria uma barra de progresso
  59                 self.barra_progresso = gtk.ProgressBar()
  60                 vbox.pack_start(self.barra_progresso, False, False, 0)
  61                 
  62                 # Chamar o método desenhar_progresso a da 5 milisegundos
  63                 self.tempo = gobject.timeout_add(5, self.desenhar_progresso, self.barra_progresso)
  64 
  65                 # Cria uma separador
  66                 separador = gtk.HSeparator()
  67                 vbox.pack_start(separador, False, False, 0)
  68 
  69                 # Cria uma etiqueta
  70                 self.etiqueta= gtk.Label()
  71                 self.etiqueta.set_label(self.texto)
  72                 vbox.pack_start(self.etiqueta, False, False, 0)
  73                 
  74                 # Mostra todas os widgets adicionados na janela
  75                 self.janela.show_all()
  76                 
  77         def escrever_texto(self, widget= None):
  78                 '''Escreve o texto na etiqueta'''
  79                 
  80                 self.etiqueta.set_label(self.texto)
  81                 
  82         def desenhar_progresso(self, widget= None):
  83                 '''Desenha ou atualiza a barra de progressso'''
  84                 
  85                 self.escrever_texto()
  86                 
  87                 # Calculo flacionário para adequação da barra de progresso
  88                 valor= (float(self.registro) / self.total_registro)
  89                 
  90                  # Caso seja 1 ou maior (100%) feche a tela
  91                 if valor >= 1: self.fechar_janela()
  92                         
  93                 # Valor válido 0.0 à 1.0
  94                 self.barra_progresso.set_fraction(valor) 
  95                 
  96                  # Exibe a porcentagem
  97                 self.barra_progresso.set_text("%.2f%%" % (valor * 100))
  98                 return True
  99                 
 100         def fechar_janela(self, widget= None):
 101                 '''Fecha o aplicativo'''
 102                 
 103                 # Remove a função relativa ao tempo (Timer)
 104                 gobject.source_remove(self.tempo)
 105                 gtk.main_quit()

Exemplo de uso

   1 #-*- encoding: utf8 -*-
   2 
   3 ##
   4 # Esse programa é livre, você pode distribuir e/ou modifica-lo sob os
   5 # termos da licença geral publica GNU publicada pela fundação de software
   6 # livre (Free Software Foundation),  contida na segunda versão da licença
   7 # ou (em sua opinião) outra versão mais recente.
   8 # Esse programa é distribuído na esperança de ser útil e satisfatório,
   9 # mas DESTITUÍDO DE QUALQUER GARANTIA, destituído igualmente da
  10 # COMPATIBILIDADE DE MÁQUINA ou CONVENIÊNCIA PARA PROPÓSITOS
  11 # PARTICULARES. Veja a licença geral publica GNU para opter mais detalhes.
  12 # http://www.gnu.org/copyleft/gpl.html
  13 ##
  14 
  15 ###############################################################################
  16 ## Nome do Arquivo: teste.py
  17 ## Autor: Guedes, Maurilio<billguedes>
  18 ## Data da Criação: 26/07/2005
  19 ## Data da Modificação: 27/07/2005
  20 ## Finalidade: Testar o uso do arquivo minhabarra.py
  21 ##
  22 ##
  23 ##
  24 ###############################################################################
  25 
  26 import pygtk
  27 pygtk.require('2.0')
  28 import gtk
  29 import minhabarra
  30 
  31 class Principal:
  32         '''Classe principal'''
  33         
  34         def __init__(self):
  35                 '''Incialização padrão'''
  36                 
  37                 # Cria uma janela
  38                 janela= gtk.Window()
  39                 janela.connect("destroy", gtk.main_quit)
  40                 
  41                 # Cria um botão
  42                 botao= gtk.Button("Executar")
  43                 botao.connect("clicked", self.executar)
  44                 janela.add(botao)
  45                 
  46                 # Mostra todas os widgets adicionados na janela
  47                 janela.show_all()
  48                 
  49         def executar(self, widget= None):
  50                 '''Executa o código abaixo'''
  51                 
  52                 # Carrega a classe 'BarraProgresso'
  53                 barra= minhabarra.BarraProgresso()
  54                 barra.texto= "Começando o Processo..."
  55                 
  56                 # Muda a variável registro da classe 'BarraProgresso'
  57                 barra.registro= 0
  58                 
  59                 # Muda a variável total_registro da classe 'BarraProgresso'
  60                 barra.total_registro= 15000
  61                 
  62                 # Desenha os widgets da classe 'BarraProgresso'
  63                 barra.desenhar()
  64 
  65                 # Loop ilustrativo, mas poderia ser uma lista de clientes
  66                 for i in range(barra.total_registro):
  67                         
  68                         # Depuração do código
  69                         print "Estou no for imprimindo %s\n" % i
  70                         
  71                         # Mostra mais informação ao usuário
  72                         barra.texto= "Estou Processando o Cliente '%05d'" % barra.registro
  73                         
  74                         # Muda novamente a variavel registro, ou melhor, acrescenta +1 na variável
  75                         barra.registro+= 1
  76                         
  77                         # Pausa o processo e espera a execução do "Timer"
  78                         gtk.mainiteration()
  79                         
  80 # Chama a classe 'Principal'                    
  81 p= Principal()
  82 
  83 # Inicia o aplicativo
  84 gtk.main()


Guedes, Maurilio <billguedes.python at terra.com.br>

Volta para CookBook.