Criando uma simples janela em pygtk – Parte II
No nosso primeiro artigo sobre este assunto, criamos uma janela sem conteúdo algum. Desta vez vamos adicionar alguma funcionalidade a esta janela. Baixe o código fonte abaixo, salve como gtk_window.py e execute-o:
#!/usr/bin/env python
import pygtk
import gtk
def clicada( botao , label ):
if label.get_text() == "" :
label.set_text( "obrigado" )
else:
label.set_text( "" )
win=gtk.Window( )
win.set_title( 'Titulo da Janela' )
win.set_size_request(200,50)
win.connect( "destroy" , gtk.main_quit )
box=gtk.VBox( )
win.add( box )
label=gtk.Label( "" )
box.pack_start( label )
botao=gtk.Button( "clique-me" )
box.pack_start( botao )
botao.connect( "clicked" , clicada , label )
win.show_all()
gtk.main()
A primeira diferença deste código para o anterior é que agora usamos uma função:
def clicada( botao , label ):
if label.get_text() == "" :
label.set_text( "obrigado" )
else:
label.set_text( "" )
Esta função, que denominamos “clicada”, está aí para ser uma função de callback para o botão que será criado mais à frente no código. Ela recebe dois parâmetros: um gtk.button e um gtk.Label.
Uma outra novidade é a gtk.VBox criada na linha 18. A VBox (Caixa Vertical) é um container; serve para “acondicionar” os widgets (botões, caixas de texto, rótulos, etc) na janela. Existem outros tipos de container e você pode aprender mais sobre eles em outro lugar.
Na linha 19 ( win.add( box ) ), a gtk.VBox é adicionada a Janela.
Um novo widget é criado na linha 21 [ label=gtk.Label( "" ) ], uma “etiqueta” com rótulo em branco. Esta “etiqueta” é adicionada à gtk.VBox na linha 22 [ box.pack_start( label ) ].
Nas linha 24 e 25 repetimos o procedimento, desta vez com um gtk.Button, um botão.
Agora atenção, pois na linha 26 é que nós dizemos o que vai acontecer quando o botão for clicado:
botao.connect( "clicked" , clicada , label )
Esta linha conecta o sinal “clicked” à função ‘clicada’ ( linhas 6 a 10 ), passando como parâmetro o objeto label. O próprio botão é passado como parâmetro aqui de forma implícita.
Na linha 28 determinamos a exibição da Janela e todos os seus componentes, e na linha 29 chamamos o loop principal.
Copie o código, salve e execute.
10 / Junho / 2008 às 9:30 pm
bacana o tutorial cara
11 / Junho / 2008 às 8:16 pm
Ótima explicação, se poder fazer algo usando glade (carregar um xml) ficaria muito bacana….
11 / Junho / 2008 às 11:46 pm
Grande iniciativa. Estou estudando pkgtk no manual e esta abordagem é muito mais simples. Parabéns.
12 / Junho / 2008 às 2:03 pm
[...] por Marcos Melo (rabiscosgeraisΘgmail·com) – referência [...]
12 / Junho / 2008 às 5:20 pm
Muito bom o tutorial =)
Eu pensei em utilizar o PyGTK para o GeSpeak (projeto pessoal), já que o php-gtk não tem tido boa aceitação. Mas resolvi ir de c++ e posso garantir que o Python parece muito mais fácil.
Abraços
InFog
13 / Junho / 2008 às 2:39 pm
Como eu disse, o tutorial esta muito bom, eu nunca mexi com o pygtk e o seu tutorial esta me incentivando a estudar.De agor aem diante vou acompanhar a sua série de tutoriais sobre pygtk e o seu blog com um todo , legal!!
15 / Junho / 2008 às 2:41 am
[...] Criando uma simples janela com pygtk Criando uma simples janela em pygtk – parte II [...]
30 / Junho / 2008 às 12:24 am
[...] uma simples janela em PyGTK Criando uma simples janela em PyGTK – parte II DrawingArea – Desenhando na tela com PyGTK Orientação a Objetos com python Orientação a Objetos [...]
22 / Novembro / 2008 às 9:34 am
hola yo soy nuevo en esto, yo tengo el siguiente problema, cuando compilo el codigo me dice que hace falta la libreria pygtk y no se como instalarcela, me puedes ayudar? muchas gracias.
22 / Novembro / 2008 às 10:11 am
hola yo soy nuevo en esto, yo tengo el siguiente problema, cuando compilo el codigo me dice que hace falta la libreria pygtk y no se como instalarcela, me puedes ayudar? muchas gracias. disculpa digite mi correo mal.