Olá alunos!
hoje vamos continuar falando sobre PyGTK. Na aula passada vimos uma pequena introdução ao PyGTK, acredito que vocês não tenham encontrado muitas dificuldades com ele.
Pois bem, até agora fizemos uma janela com um botão, coisa simples, mas como eu faço para adicionar mais botões? Será que eu posso utilizar o mesmo método que usei para o primeiro botão? Usar a função add() da classe gtk.Window?
Hum, agora a coisa começa a complicar um pouquinho pois teremos que usar as “Caixas“, mais precisamente as caixas verticais e horizontais, vejam o desenho abaixo, ele mostra o GeSpeak, mostrando as tais caixas:

Bem, o desenho acima não está completo, o GeSpeak ainda tem um menu, mais SpinButtons e mais uma Caixa Horizontal abaixo da primeira, mas serve como exemplo, vamos às explicações:
Em vermelho está a janela em sí, gtk.Window, este widget suporta apenas mais UM widget acoplado à ele. E é este o motivo que nos faz usar, neste caso, uma caixa vertical, gtk.VBox, em verde, este widget já suporta quantos widgets precisarmos, vejam que dentro dele temos, em roxo, duas caixas horizontais, gtk.HBox, e também um gtk.TextView. O mesmo acontece com as caixas horinzontais, elas suportam vários widgets.
No começo isso parece um pouco complicado, mas é bem simples. Vamos ver um código de exemplo:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 | #!/usr/bin/env python # -*- coding: utf-8 -*- import pygtk import gtk def ola_mundo(widget): print "Hello World" # criando a janela janela = gtk.Window(gtk.WINDOW_TOPLEVEL) # agora uma caixa vertical caixa_v = gtk.VBox() # agora um label e uma caixa de entrada label1 = gtk.Label("Sou um label") entrada = gtk.Entry() # agora uma caixa horizontal, para o label e entry caixa_h = gtk.HBox() # adicionando o label e o entry à caixa horizontal caixa_h.pack_start(label1, expand=False, fill=True) caixa_h.pack_start(entrada, expand=False, fill=True) # agora a caixa horizontal é adicionada à ciaxa vertical caixa_v.pack_start(caixa_h, expand=False, fill=True) # ufa, quase lá # Agora um botão botao = gtk.Button("Clique aqui") botao.connect('clicked', ola_mundo) # agora o botão é adicionado à caixa vertical caixa_v.pack_start(botao, expand=False, fill=True) # e finalmente adicionamos a caixa vertical à janela janela.add(caixa_v) janela.show_all() gtk.main() |
O código está bem comentado, vejam a janela que ele gerou:

Simples, não? As opções expand e fill fazem referência ao preenchimento que o widget terá na janela, se ele irá se expandir junto com a janela ou não, etc.
E esta foi a nossa aula de hoje!
Lição de Casa!
A lição de casa para hoje é: “Faça o código para montar a janela do GeSpeak mostrado na figura ali em cima, está bem colorido e fácil de acompanhar =) Boa sorte!
Outros textos que você pode gostar:
- Curso de Python – Aula 19 – PyGTK e sua documentação Olá pessoal! Aqui vamos nós para mais uma aula de...
- Curso de Python – Aula 16 – Iniciando no PyGTK Olá alunos! Como vocês podem ver o blog está de...
- Curso de Python – Aula 8 – Mais sobre operadores e conhecendo as listas e o “for” Olá Alunos! A aula da semana passada foi bem...
Posts relacionados trazidos a você pelo Yet Another Related Posts Plugin.



























>

Grobsch
on mar 31st, 2009
@ 16:58:
Mais aulas, mais aulas;;;
[Resposta]
Tomás
on abr 1st, 2009
@ 1:30:
Não sei se já falaram isso (eu acredito que sim), masseria muito legal ter todo esse material junto em um pdf ou algo do gênero. Isso seria um ótimo primeiro contato pra quem está começando a programar em Python.
Ótimas aulas. Continue o bom trabalho.
[Resposta]
Carlos Augusto
on abr 22nd, 2010
@ 0:28:
Como adiciono 2 botoes ao mesmo programa ? eu fiz asism e nao deu certo:
#!/usr/bin/python
# *-* coding: utf-8 *-*
import pygtk
import gtk
def startLampp(widget):
print “Starting lampp”
def stopLampp(widget):
print “Stoping lampp”
# Janela do programa
janela = gtk.Window(gtk.WINDOW_TOPLEVEL)
# Caixa horizontal
caixaHorizontal = gtk.HBox()
# Botoes
start = gtk.Button(“Start lamp”)
start.connect(‘clicked’, startLampp)
stop = gtk.Button(“Stop lamp”)
stop.connect(‘clicked’, stopLampp)
janela.add(start)
janela.add(stop)
janela.show_all()
gtk.main()
[Resposta]