InFog

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

Curso de Python – Aula 16 – Iniciando no PyGTK

Tags: , ,

Olá alunos!

Como vocês podem ver o blog está de visual novo! Uhul! Ainda tenho que arrumar uns detalhes, mas no geral acho que está muito legal =)

Bem o exercício da última aula foi bem pesadinho, o pessoal teve que suar para resolver hehe, então acredito que aprenderam bastante sobre Python, teve até gente dizendo que passou a noite fazendo os exercícios e com isso aprendeu bestante. Eu fico muito feliz de ver esse tipo de coisa acontecendo, acredito que estou estimulando vocês, alunos e leitores, a aprender e crescer mais. Então vamos em frente!

Como alguns devem ter visto eu lancei o GeSpeak 0.3 nesta semana, ele é um bom exemplo do que veremos hoje, as aplicações em PyGTK. O PyGTK usa o GTK+ para oferecer um conjunto de elementos gráficos para desenvolvimento de interfaces com o usuário. O PyGTK é multiplataforma (*nix e Windows) o que significa que seu código pode rodar sem alterações praticamente em qualquer canto. O que não é o caso do GeSpeak, já que ele utiliza comandos do Linux para algumas tarefas.

Então vamos começar com o básico, janelas e botões.

O código abaixo cria uma janela com um botão, não há, ainda qualquer tipo de ação para o botão:

1
2
3
4
5
6
7
8
9
#!/usr/bin/env python
import pygtk
pygtk.require('2.0')
import gtk
janela = gtk.Window(gtk.WINDOW_TOPLEVEL)
botao = gtk.Button("Clique aqui...")
janela.add(botao)
janela.show_all()
gtk.main()

Pronto, um programinha bem simples. Ele só exibe o botão, mas vamos entender como isso funciona…

Na segunda linha estamos importando o módulo PyGTK.

Na terceira linha nós usamos a função require do PyGTK para ter certeza que estamos com um versão da família 2.x.

A quarta linha é responsável por importar o módulo GTK.

Na quinta linha é criado um objeto da classe Window do módulo gtk.

Na sexta linha é criado um botão usando a classe Button.

Na sétima linha adicionamos o botão à janela usando a função add() da classe Window.

A oitava linha serve para exibir a janela e tudo o que está dentro dela, com a função show_all().

E na nona linha chamamos o looping principal do GTK com a função main().

Agora vou mostrar um exemplo em que o clique do botão dispara uma função que exibirá “Hello World” no terminal:

1
2
3
4
5
6
7
8
9
10
11
12
#!/usr/bin/env python
import pygtk
#pygtk.require('2.0')
import gtk
def ola_mundo(widget):
    print "Hello World"
janela = gtk.Window(gtk.WINDOW_TOPLEVEL)
botao = gtk.Button("Clique aqui...")
botao.connect('clicked', ola_mundo)
janela.add(botao)
janela.show_all()
gtk.main()

Vejam que agora a função connect() é usada para “conectar” o sinal “clicked” do botão à função ola_mundo().

Bem por enquanto é isso. Na semana que vem teremos mais, recomendo que todos leia o artigo “Mantendo a Sanidade com o Glade“, pois no começo dele é explicado como o GTK trabalha, leiam sobre os sinais e também a parte “Explodindo Coisas”.

Lição de Casa

A lição de casa de hoje é muito simples, mas vocês vão precisar usar a referência do PyGTK para fazer. Eu só quero uma janela com um botão escrito “Clique aqui”, e quando a pessoa clicar o texto do botão deve mudar para “Clicado”. Boa sorte =)

Outros textos que você pode gostar:

  1. Curso de Python – Aula 17 – Mais sobre o PyGTK Olá alunos! hoje vamos continuar falando sobre PyGTK. Na aula...
  2. Curso de Python – Aula 19 – PyGTK e sua documentação Olá pessoal! Aqui vamos nós para mais uma aula de...
  3. Curso de Python – Aula 10 – Entrada de dados e formatação de strings Olá alunos! A aula de hoje vai começar um...

Posts relacionados trazidos a você pelo Yet Another Related Posts Plugin.

Tags: , ,

18 Comentários to “Curso de Python – Aula 16 – Iniciando no PyGTK”


  1. Diego Souza
    on mar 15th, 2009
    @ 21:23

    Cara, parabéns, ficou ótimo o novo tema.
    É desse tipo de desenvolvimento web que eu gosto, clean, forte uso de css e conteúdo de qualidade.
    []’s.

    [Resposta]


  2. Grobsch
    on mar 16th, 2009
    @ 7:14

    Agora sim nós vamu aprender a fazer interfaces.;; hehe

    [Resposta]


  3. Magnun
    on mar 16th, 2009
    @ 8:03

    Muito bom cara!

    Quando você falou que ia ter PyGTK fiquei preocupado porque, para muitos, alguns conceitos (signals por exemplo) são muito complexos!

    Mas vendo como você abordou essa introdução, acredito que a galera vai conseguir pegar tranquilo…

    Até mais…

    [Resposta]


  4. Luiz Agostinho
    on mar 16th, 2009
    @ 10:13

    Olá,

    Ficou muito bom o novo tema! Parabéns! Só acho que ficou faltando um link para o Fórum, pelo menos não consegui achá-lo! ;-)

    Abraço!

    [Resposta]


  5. Igo Coelho
    on mar 16th, 2009
    @ 13:49

    Muito show!!!
    Tive apenas que definir a codificação na segunda linha pra funcionar no meu ubuntu.
    # -*- coding: iso-8859-1 -*-

    [Resposta]


  6. Henry
    on mar 16th, 2009
    @ 14:23

    vi um erro: ” isso aprendeu bestante. ”

    valeu pela aula
    :)

    [Resposta]


  7. Rodrigo Cesar
    on mar 17th, 2009
    @ 0:22

    Infog,

    qual Ide vc usa ? Uso IDLE mas ele trava quando coloco algum programa
    com gtk já li em algum lugar que é pq ele é feito nessa biblioteca.
    Baixei o Pydev pra o eclipse mas ele diz o seguinte quando coloco
    pra rodar algum programa com gtk

    AttributeError: ‘module’ object has no attribute ‘Window’

    [Resposta]


  8. Curso de Python - Aula 17 - Mais sobre o PyGTK « InFog
    on mar 29th, 2009
    @ 11:43

    [...] vamos continuar falando sobre PyGTK. Na aula passada vimos uma pequena introdução ao PyGTK, acredito que vocês não tenham encontrado muitas [...]


  9. franklin anderson
    on abr 1st, 2009
    @ 9:32

    ola amigo !!

    ja brinquei com pygtk e achei muito legal. Nao sei se voce ja usou mas de uma olhada no glade, tu vai ver que como fica muito mais bonito desenvolver aplicativos com pygtk usando o glade…

    [Resposta]


  10. Rafael de Almeida
    on abr 20th, 2009
    @ 23:31

    Eu uso o Ubuntu 8.10, olha o que está acontecendo:

    1
    2
    3
    4
    5
    6
    7
    8
    rafael@lamp:~/Desktop$ ./gtk.py
    Traceback (most recent call last):
      File "./gtk.py", line 5, in
        import gtk
      File "/home/rafael/Desktop/gtk.py", line 6, in
        janela = gtk.Window(gtk.WINDOW_TOPLEVEL)
    AttributeError: 'module' object has no attribute 'Window'
    rafael@lamp:~/Desktop$

    [Resposta]


  11. mauro
    on abr 28th, 2009
    @ 20:42

    Traceback (most recent call last):
    File “”, line 1, in
    import pygtk
    ImportError: No module named pygtk

    aparece quando eu escrevo import pygtk

    meu nao é linux mas nos cursos anteriores eu conseguia normalmente

    [Resposta]


  12. Evandson
    on mai 13th, 2009
    @ 9:31

    Tenta Reinstalar ele…meu python estava assim tmb…não estava funcionando nem o Pygtk nem o gtk…então desinstalei os 3 e reinstalei e ta funcionando a 1000…:P

    flw!!

    [Resposta]


  13. Evandson
    on mai 13th, 2009
    @ 9:36

    Rafael…

    muda o nome do arquivo…

    de gtk.py para exemplogtk.py

    e funciona normal!!!

    flw!!

    [Resposta]


  14. Renan Fernandes
    on jul 12th, 2009
    @ 21:04

    Muito bom!

    Simples, funcional, aborda de maneira clara e objetiva os conceitos básicos do pygtk além de estimular os leitores e alunos a buscar por referências e aprender cada vez mais.

    Está de parabéns.

    Fique com Deus.

    [Resposta]


  15. Programar com Interface
    on out 13th, 2009
    @ 8:08

    [...] [...]


  16. Rafael Abrahão Santos
    on nov 22nd, 2009
    @ 17:06

    Muito bom mesmo!

    Eu estava mesmo procurando por conteúdo em português sobre PyGTK, apesar
    de saber inglês!

    Agora sobre as conexões, eu vi vários tipos de ‘connect’. Minha dúvida é: quando
    terei de usar cada uma?

    Mas me ajudou bastante, muito bom!
    Fiquem todos com Deus!

    [Resposta]


  17. Eduardo Mucelli R. Oliveira
    on jun 8th, 2010
    @ 17:32

    @Rafael,

    Os “vários tipos de connect” são administrados pela classe base gobject.GObject. Em suma
    existe object.{connect, connect_after, connect_object, connect_object_after}, que
    diferenciam-se, falando de maneira grosseira, no chamada da função que vai
    lidar com callback.

    Leia http://pygstdocs.berlios.de/pygobject-reference/class-gobject.html

    [Resposta]


  18. Eduardo Mucelli R. Oliveira
    on jun 8th, 2010
    @ 17:35

    @Rafael,

    Quem lida com sinais é a gobject.GObject. A diferença entre os tipos de “connect” é como a função de callback será chamada.

    Leia: http://pygstdocs.berlios.de/pygobject-reference/class-gobject.html

    [Resposta]

Deixar uma Resposta

© 2009 InFog. All Rights Reserved.

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