0
Comentário: não formatada conforme padrão
|
6136
|
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 #-*- 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: minhabarra ## Autor: Guedes, Maurilio<billguedes> ## Data da Criação: 26/07/2005 ## Data da Modificação: 27/07/2005 ## Finalidade: Mostrar uma barra de progresso ## ## ## ############################################################################### import pygtk pygtk.require('2.0') import gtk, gobject class BarraProgresso: '''Classe principal''' def __init__(self): '''Incialização padrão''' self.texto= ""; self.registro= 1; self.total_registro= 500; def desenhar(self): '''Desenha os widgets''' # 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): '''Escreve o texto na etiqueta''' self.etiqueta.set_label(self.texto) def desenhar_progresso(self, widget= None): '''Desenha ou atualiza a barra de progressso''' self.escrever_texto() # Calculo flacionário para adequação da barra de progresso valor= (float(self.registro) / self.total_registro) # Caso seja 1 ou maior (100%) feche a tela if valor >= 1: self.fechar_janela() # Valor válido 0.0 à 1.0 self.barra_progresso.set_fraction(valor) # Exibe a porcentagem self.barra_progresso.set_text("%.2f%%" % (valor * 100)) return True def fechar_janela(self, widget= None): '''Fecha o aplicativo''' # Remove a função relativa ao tempo (Timer) gobject.source_remove(self.tempo) gtk.main_quit() }}} == Exemplo de uso == {{{ #!python #-*- 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: '''Classe principal''' def __init__(self): '''Incialização padrão''' # Cria uma janela janela= gtk.Window() janela.connect("destroy", gtk.main_quit) # Cria um botão botao= gtk.Button("Executar") botao.connect("clicked", self.executar) janela.add(botao) # Mostra todas os widgets adicionados na janela janela.show_all() def executar(self, widget= None): '''Executa o código abaixo''' # Carrega a classe 'BarraProgresso' barra= minhabarra.BarraProgresso() barra.texto= "Começando o Processo..." # Muda a variável registro da classe 'BarraProgresso' barra.registro= 0 # Muda a variável total_registro da classe 'BarraProgresso' barra.total_registro= 15000 # Desenha os widgets da classe 'BarraProgresso' barra.desenhar() # Loop ilustrativo, mas poderia ser uma lista de clientes for i in range(barra.total_registro): # Depuração do código print "Estou no for imprimindo %s\n" % i # Mostra mais informação ao usuário barra.texto= "Estou Processando o Cliente '%05d'" % barra.registro # Muda novamente a variavel registro, ou melhor, acrescenta +1 na variável barra.registro+= 1 # Pausa o processo e espera a execução do "Timer" gtk.mainiteration() # Chama a classe 'Principal' p= Principal() # Inicia o aplicativo gtk.main() }}} Volta para CookBook. ---- Guedes, Maurilio <billguedes.python@terra.com.br> |
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 100 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()
Volta para CookBook.
Guedes, Maurilio <billguedes.python@terra.com.br>