12/11/2006

Qual interface gráfica usar?

Quem está entrando no mundo Python, geralmente tem uma grande dificuldade quando se trata de desenvolver aplicativos que utilizem inteface gráfica (GUI).

O grande problema não está relacionada com a falta de recursos que python tem ou com dificuldade de programar interfaces e sim na grande variedade de bibliotecas disponíveis para Python. Sendo assim, no começo é bem complicado escolher qual utilizar.

Nesse post vou tratar das seguintes bibliotecas: PyGTK, PyQt, wxPython, PySWT, PyUi e Tkinter.

Tkinter
Acompanha a distribuição oficial do interpretador Python. É simples de utilizar, mas é muito pobre em componentes visuais. Uma grande vantagem que é portável em qualquer ambiente em que funcione o Python.


PyGTK
Baseada no GTK do GNOME, tem ricos componentes visuais e boa performance. Dois problemas que acompanham essa biblioteca é a portabilidade e o tamanho do código.
O GTK funciona também no Windows, mas não é algo confiável e fácil de se fazer...
Em relação ao tamanho do código, na sintaxe do PyGTK é necessário a utilização de comandos retundantes em muitas partes do código, assim necessitando de muitas linhas de código para se fazer algo.

PyQt
Baseada na biblioteca QT do KDE, tambem tem boa performance e ótimos componentes visuais, e a estrutura de programação em PyQt é boa, diferente do PyGTK.
O lado ruim dessa biblioteca é a portabilidade. Ela funciona em Linux perfeitamente, mas em ambientes Windows, tem os mesmos problemas que o PyGTK.
Além disso PyQt é licenciado pela GPL. Sendo assim tem alto custo para desenvolvimento para sistemas comerciais.

wxPython
Baseada em wxWindows, funciona no Windows e no Linux. Rica em componentes visuais e bem documentada. Mas é dificil de se aprender, é um poco instável, e a API é meio complicada.

PySWT
baseada no SWT do JAVA. Rica em componentes visuais e facil de utilizar. Ao meu ver, muito boa. MAs muito pouco utilizada...

PyUi
é uma biblioteca feita com o intuito de se desenvolver interfaces para jogos. Utiliza pygame.. Mas pode ser usadas para qualquer tipo de aplicação.

Conclusão:
* Tkinter - no caso de uma aplicação que não necessite grande apelo visual
* PyQT - para qualquer aplicação que seja GPL e em Linux
* PyGTK - para qualquer caso em que a PyQT não seja uma boa opção, como em aplicações comerciais
* PyUi - para desenvolver Interfaces para Games

Agora no caso de desenvolver bons aplicativos para Windows ainda fica a pergunta PySWT ou wxPython? wxPython é mais utilizada. Mas será que maior popularidade influi em melhor opção?

Eu estou testando as duas e espero encontrar a resposta...

5 comentários:

Helder Robalo disse...

E Drews, agora as coisas estão ficando melhores, com interface grafica, os nossos queridos usuários recebem a informação de forma mais atrativa. Legal, python está começando a fazer minha cabeça.

O Jonathas tem que visitar mais seu blog.

Carlos disse...

Desenvolvo sistemas com PyQt a algum tempo voltado para Windows utilizando PyQt4 e nao encontro nenhum problema de compatibilidade. A instalacao e utilizacao é simples e nao exige magicas como em GTK. Para sistemas GPL Qt é uma otima opcao. Como dito no post, para sistemas comerciais as licensas sao um pouco caras.

Anônimo disse...

Uso Gtk com Gtkmm (C++), PhpGtk e PyGtk a muitos anos. Gtk é um tk tão poderoso que o desktop gnome é inteiro feito em Gtk.

Fácil de programar, muito bem documentado e de aparência muito bonita tanto em Windows quanto em Linux... sem contar a ferramenta Glade que gera a interface e as classes do programa.

Discordo com a fama de que Gtk é de difícil instalação no windows. Quem programa em vários tks sabe que todos são horríveis de compilar no windows, a culpa é do Bill...

Anônimo disse...

PySWT pode até ser boa e pouco utilizado pq ninguem consegue instalar em windows, simples assim, vc conhece alguem com qi normal que conseguiu? Eu nunca.

Deco disse...

Glade tem um bug muito chato, quando eu clico num filtro de uma opção de janela pronta o software simplesmente fecha. Uso Ubuntu 10.04. Vou testar pyqt e pyswt