Receita: Mensagens Padrões no PyGtk
Em nossos aplicativos precisamos de mensagens para alertar o usuário, seja ela crítica ou não. Essa receita ensina como criar mensagem padrão para seu aplicativo.
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: utilitario
17 ## Autor: Guedes, Maurilio<billguedes>
18 ## Data da Criação: 26/11/2004
19 ## Data da Modificação: 03/07/2005
20 ## Finalidade: Funções úteis do dia-a-dia
21 ##
22 ##
23 ##
24 ###############################################################################
25
26 import pygtk
27 pygtk.require('2.0')
28 import gtk
29
30 def mensagem(texto, janela= None):
31 '''
32 Uso: Mensagem(texto, janela)
33 texto -> texto a ser exibido nos padrões pango
34 janela -> janela ativa
35
36 Apresenta uma caixa de dialogo com o botão 'OK'
37 com o texto definido pelo desenvolvedor e o ícone de informação
38
39 Endereço das referências do pango:
40 http://www.pygtk.org/pygtk2reference/pango-markup-language.html
41 '''
42
43 dialogo= gtk.MessageDialog(janela, gtk.DIALOG_MODAL, gtk.MESSAGE_INFO, \
44 gtk.BUTTONS_OK, texto)
45 dialogo.set_markup(texto) # texto formatado nos padrões pango
46 dialogo.run()
47 dialogo.destroy()
48
49 def mensagem_erro(texto, janela= None):
50 '''
51 Uso: Mensagem(texto, janela)
52 texto -> texto a ser exibido nos padrões pango
53 janela -> janela ativa
54
55 Apresenta uma caixa de dialogo com o botão 'OK'
56 com o texto definido pelo desenvolvedor e com o ícone de erro
57
58 Endereço das referências do pango:
59 http://www.pygtk.org/pygtk2reference/pango-markup-language.html
60 '''
61
62 dialogo= gtk.MessageDialog(janela, gtk.DIALOG_MODAL, gtk.MESSAGE_ERROR, \
63 gtk.BUTTONS_OK, texto)
64 dialogo.set_markup(texto) # texto formatado nos padrões pango
65 dialogo.run()
66 dialogo.destroy()
67
68 def confirmar(texto, janela= None):
69 '''
70 Uso: Confirmar(texto, janela)
71 texto -> texto a ser exibido nos padrões pango
72 janela -> janela ativa
73
74 Apresenta uma caixa de dialogo com os botões 'Sim' e 'Não'
75 com o texto definido pelo desenvolvedor
76
77 Endereço das referências do pango:
78 http://www.pygtk.org/pygtk2reference/pango-markup-language.html
79 '''
80
81 dialogo= gtk.MessageDialog (janela, gtk.DIALOG_MODAL, gtk.MESSAGE_QUESTION, \
82 gtk.BUTTONS_YES_NO, texto)
83 dialogo.set_markup(texto) # texto formatado nos padrões pango
84 response = dialogo.run ()
85 dialogo.destroy ()
86 if response == gtk.RESPONSE_YES:
87 return True
88 else:
89 return False
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: 13/08/2005
19 ## Data da Modificação: 13/08/2005
20 ## Finalidade: Testar o uso do arquivo utilitario.py
21 ##
22 ##
23 ##
24 ###############################################################################
25
26 import pygtk
27 pygtk.require('2.0')
28 import gtk
29 import utilitario
30
31 class Principal:
32 '''Classe principal'''
33
34 def __init__(self):
35 '''Incialização padrão'''
36
37 # Cria uma janela
38 self.janela = gtk.Window(gtk.WINDOW_TOPLEVEL)
39 self.janela.set_title("Usando a Rotina Utilitário") # Coloca um título
40 self.janela.set_border_width(5) # Especifica uma porda de 5 pixels
41 self.janela.set_position(gtk.WIN_POS_CENTER) # Centraliza a janela
42
43 # Fecha o aplicativo ao destruir a janela
44 self.janela.connect("destroy", gtk.main_quit)
45
46 # Cria um botão
47 botao= gtk.Button("Executar")
48 botao.connect("clicked", self.executar) # Execute o método "executar" ao clicar
49 self.janela.add(botao) # Adiciona o botão na janela
50
51 # Mostra todas os widgets adicionados na janela
52 self.janela.show_all()
53
54 def executar(self, widget= None):
55 '''Executa o código abaixo'''
56
57 # Mostra uma mensagem de informação, o "<span>", "<b>" são padrão pango
58 # Exemplo sem conexão ao "Pai", nesse exemplo você pode selecionar
59 # outra janela
60 utilitario.mensagem("<b><span color='red'>Atenção</span></b>, Você está "\
61 "Preste a <b>Apagar</b> um Arquivo <b>Importante</b>!")
62
63 # Mostra uma mensagem de informação, o "<span>", "<b>" são padrão pango
64 # Exemplo com conexão ao "Pai", nesse exemplo você NÃO pode selecionar
65 # outra janela
66 utilitario.mensagem("<b><span color='red'>Atenção</span></b>, Você está "\
67 "Preste a <b>Apagar</b> um Arquivo <b>Importante</b>!", self.janela)
68
69 # Mostra uma mesagem de confirmação
70 if utilitario.confirmar('<b>Realmente</b> Deseja <b>Apagar</b> este Arquivo?',
71 self.janela):
72
73 # Mostra uma mensagem de erro
74 utilitario.mensagem_erro('Ocorreu um <b>Erro</b> ao Apagar o Arquivo!',
75 self.janela)
76 else:
77
78 # Mostra uma mensagem de informação
79 utilitario.mensagem('Operação <b>Abortada</b>!', self.janela)
80
81
82 if __name__ == '__main__':
83 '''Se o aplicativo é principal, execute esse método'''
84
85 # Chama a classe 'Principal'
86 p= Principal()
87
88 # Inicia o aplicativo
89 gtk.main()
Volta para CookBook.
Guedes, Maurilio <billguedes.python at terra.com.br>