Guia Rapido de PyGTK
Introdução
Este é um tutorial baseado principalmente no PyGTK 2.0 Tutorial [1]. Nossa intenção aqui é mostrar o funcionamento da linguagem de programação Python, cujo link para a pagina oficial do projeto encontra-se aqui [2], utilizando para isto o PyGTK. A motivação para criação do mesmo derivou do fato desta linguagem de programação ter sido eleita como a oficial do projeto One Laptop Per Child.
Iniciando o Python
Para iniciarmos uma janela no Sugar (sistema operacional do XO) necessitamos criar uma atividade. Um modo fácil de contornar isto antes de aprendermos a criar a atividade é iniciando um novo X no terminal. Para isto abra o Console (Alt + =) e clique em Terminal:
(...)$ su (...)# startx -- :1
No novo X que surgirá, com o mouse posicionado em cima da janela digite:
geany
E vamos iniciar nosso primeiro programa (o número das linhas irá surgir automáticamente):
1 #!/usr/bin/env python
2
3 # example base.py
4
5 import pygtk
6 pygtk.require('2.0')
7 import gtk
8
9 class Base:
10 def __init__(self):
11 self.window = gtk.Window(gtk.WINDOW_TOPLEVEL)
12 self.window.show()
13
14 def main(self):
15 gtk.main()
16
17 print __name__
18 if __name__ == "__main__":
19 base = Base()
20 base.main()
Após digitar este código salve-o (clicando no Salvar) com o nome base.py Agora execute o programa. (No botão Executar)
Uma figura similar com essa irá surgir:
Olá a Todos!
Agora vamos ao nosso primeiro programa com um widget (um botão). Antes de passar ao código em si um pouco de teoria. No meio do código abaixo vocês irão perceber a presença de muito texto, explicando o que acontece no programa. Esta é uma pratica muito comum e muitas vezes necessarias, já que muitas vezes fazemos programas que serão posteriormente utilizado por outros e sem comentários fica díficil de outra pessoa dar continuidade no trabalho iniciado por você. Neste caso os comentários tem o intuito de explicar cada passo do programa. Em Python toda linha de comentário é precedida por '#' e tudo que seguir será ignorado pelo interpretador.
Programa olatodos.py
1 #!/usr/bin/env python
2
3 import pygtk
4 import gtk
5
6 #Aqui iniciamos nossa classe
7 class HelloWorld:
8
9 # Esta eh uma função de retorno. Neste exemplo os argumentos serao ignorados neste exemplo.
10 def hello(self, widget, data=None):
11 print "Ola a Todos"
12
13 # Retornando False (falso) nesta funcao o GTK ira emitir o sinal de "destroy". Se voce retornar True
14 # (verdadeiro),significa que voce nao quer que a janela seja fechada, o que eh muito util quando se quer fazer
15 # surgir uma janela (pop up) para perguntar se o usuario deseja mesmo fechar a janela.
16 def delete_event(self, widget, event, data=None):
17 print "Delecao de evento ocorrida"
18 return False
19 # Troque o False (Falso) acima por True (verdadeiro) e veja o que acontece.
20
21 # Outro retorno
22 def destroy(self, widget, data=None):
23 gtk.main_quit()
24
25 def __init__(self):
26
27 # Cria uma nova janela (window)
28 self.window = gtk.Window()
29
30 # Quando a janela da o sinal "delete_event" (em geral dado pelo gerenciador de janelas, normalmente pela
31 # opcao "close" (fechar), ou na barra de titulo.)
32 self.window.connect("delete_event", self.delete_event)
33
34 # Aqui conectamos o evento "destroy" ao direcionador de sinal
35 # Este evento ocorre quando chamamos gtk_widget_destroy() na janela, ou se retornamos FALSE na funcao de
36 retorno "delete_event"
37 self.window.connect("destroy", self.destroy)
38
39 # Escolhe o tamanho do lado da janela
40 self.window.set_border_width(10)
41
42 # Cria um novo botao com o rotulo "Clique Aqui".
43 self.button = gtk.Button("Clique Aqui")
44
45 # Quando o botao recebe o sinal "clicked" (clicado), ele chama a funcao hello(), mandando None (Nada) como
46 # argumento. A funcao hello() esta definida acima.
47 self.button.connect("clicked", self.hello, None)
48
49 # Isto causara a destruicao da janela chamando gtk_widget_destroy(window) quando "clicked"(clicado).
50 # Novamente o sinal poderia vir daqui ou do gerenciador de janelas
51 self.button.connect_object("clicked", gtk.Widget.destroy, self.window)
52
53 # Este comando empacota o botao dentro da janela
54 self.window.add(self.button)
55
56 # O passo final para mostrar o mais novo widget criado
57 self.button.show()
58
59 # e a janela
60 self.window.show()
61
62 def main(self):
63 # Todas as aplicacoes PyGTK tem que ter um gtk.main(). O controle acaba aqui e
64 # aguarda um evento ocorrer (como um clique de mouse ou um pressionar de tecla)
65 gtk.main()
66
67 # Se o programa rodar diretamente ou for passado como um argumento para o interpretador de python
68 # ele criara uma HelloWord e o mostrara.
69 if __name__ == "__main__":
70 hello = HelloWorld()
71 hello.main()
Olhando mais a fundo o Olá a Todos!
Vamos agora dar uma olhada mais profunda no olatodos.py e discutir um pouco sobre o conteúdo do programa.
A primeira linha do programa:
1 #!/usr/bin/env python
Esta linha é obrigatória em todo programa escrito em python e diz ao interpretador que ele deve transformar o arquivo em executável.
Em seguida temos:
3 import pygtk 4 import gtk
Estas linhas de comando importam o pygtk e o gtk, respectivamente. GTK é um conjunto de métodos desenvolvido para a linguagem de programação C/C++ utilizado para gerar as janelas e os botões. O PyGTK é quem fornece a interface entre o Python e o GTK, nos permitindo assim utilizar métodos feitos em uma linguagem em outra.
A palavra reservada class é utilizada antes de iniciarmos uma classe e é seguida pelo seu nome e ":"
7 class HelloWorld:
As funções de retorno sempre são definidas pelo nome e seguidas pelos argumentos que elas utilizam.
10 def hello(self, widget, data=None):


