PyGTK é um wrapper para o Python criado por James Henstridge, construído sobre o GIMP Toolkit (GTK) a biblioteca usada pelo GNOME e muitas outras aplicações para Linux. Tem ótimo desempenho, elementos ricos e visual agradável.

PyGTK
Autor James Henstridge[1]
Plataforma Cross-platform
Licença LGPL
Página oficial www.pygtk.org

Licença

editar

LGPL.

Plataformas

editar

Linux/Unix, Windows.

Vantagens

editar
  • Desempenho - PyGTK 0.X (para GTK 1.2) tem um ótimo desempenho. A versão 2.0 (para gtk 2.X) não tem o mesmo desempenho, mas é bem satisfatória.
  • Documentação - Bem documentada. Existem bons tutoriais para ambas as versões. Apesar de não haver uma referência completa para PyGTK 0.X, existe uma muito boa para a versão 2.X.
  • API - PyGTK usa uma API eficiente, baseada em propagação de sinais e callbacks. Um elemento qualquer emite um sinal, que é propagado "pra cima" até ser capturado e gerar a chamada de um callback.
  • IDE - Possui uma ferramenta para construção de interfaces, o Glade, que permite gerar uma referência em XML da interface, que pode ser usada diretamente pela biblioteca.
  • Portabilidade - Portar aplicações de PyGTK para Windows é fácil. Normalmente sem trocar o código.

Desvantagens

editar
  • Tamanho do código - Muito do código escrito em PyGTK chega a parecer redundante, mas é necessário. Por exemplo, para usar um elemento qualquer precisamos criá-lo, chamando a classe, configurá-lo através dos seus métodos de configuração, posicioná-lo e por fim mostrá-lo com o método show(). São no mínimo três chamadas de métodos para cada objeto. Como resultado disso, temos arquivos de código fonte imensos. Linhas e mais linhas de código são necessárias para se fazer qualquer coisa. Uma alternativa é usar a biblioteca libglade, que especifica a interface através de um arquivo XML gerado pelo editor de interfaces Glade, diminuíndo consideravelmente o tamanho do código final, com a vantagem da implementação da interface não depender da linguagem de programação escolhida.

Exemplo de Código

editar
import gtk

class HelloWorld(gtk.Window):

    def __init__(self):

        gtk.Window.__init__(self)
        self.connect("delete_event", gtk.main_quit)
        self.set_border_width(10)
        self.set_title("Hello World!")

        hbox = gtk.HBox()
        self.add(hbox)

        self.button1 = gtk.Button("Button 1")
        self.button1.connect("clicked", self.button_pressed_cb)
        hbox.pack_start(self.button1)

        self.button2 = gtk.Button("Button 2")
        self.button2.connect("clicked", self.button_pressed_cb)
        hbox.pack_start(self.button2)

    def button_pressed_cb(self, button):

        print "Hello again - %s was pressed" % button.get_label()

if __name__ == "__main__":

    win = HelloWorld()
    win.show_all()
    gtk.main()

Ver também

editar

Referências

Ligações externas

editar