PyGTK – Wikipédia, a enciclopédia livre

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

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.

LGPL.

Linux/Unix, Windows.

  • 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.
  • 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 | editar código-fonte]
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() 

Referências

Ligações externas

[editar | editar código-fonte]