InFog

Um blog sobre GNU, Linux, Open Source, Desenvolvimento e Nerdices em Geral

Curso de Python – Aula 17 – Mais sobre o PyGTK

Tags: ,

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:

gespeak_box

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:

widgets python gtk pygtk

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:

  1. Curso de Python – Aula 19 – PyGTK e sua documentação Olá pessoal! Aqui vamos nós para mais uma aula de...
  2. Curso de Python – Aula 16 – Iniciando no PyGTK Olá alunos! Como vocês podem ver o blog está de...
  3. 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.

Tags: ,

3 Comentários to “Curso de Python – Aula 17 – Mais sobre o PyGTK”


  1. Grobsch
    on mar 31st, 2009
    @ 16:58

    Mais aulas, mais aulas;;;

    [Resposta]


  2. 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]


  3. 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]

Deixar uma Resposta

© 2009 InFog. All Rights Reserved.

This blog is powered by Wordpress and Magatheme by Bryan Helmig.