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.

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)

Ligações externas

Categoria:Bibliotecas Python