PyGTK
Aspeto
Autor | James Henstridge[1] |
Plataforma | Cross-platform |
Licença | LGPL |
Página oficial | www |
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.
Licença
LGPL.
Plataformas
Vantagens
- 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
- 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
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
- PyQt (Python wrapper para Qt toolkit)
- PySide ( Python wrapper alternativo para the Qt toolkit)
- wxPython (Python wrapper para coleção wx widgets collection)
- ↑ «Software I have written > PyGTK - Python bindings for GTK». James Henstridge's Homepage
Ligações externas
- «Sítio oficial» (em inglês)