Desenvolvendo GUIs em Python: Tkinter vs PyQt [fechado]

94

Se alguém deseja desenvolver uma interface de usuário em Python, qual deles escolher: TkInter ou PyQt?

Acabei de começar com o TkInter e fui capaz de obter algumas interfaces de usuário simples com widgets elementares como rótulo, botão, caixa de texto, etc. Apenas curioso para saber o quão bom o PyQt seria comparado ao TkInter?

Felicidades

Arnkrishn
fonte
3
Além disso, observe que existem algumas opções disponíveis para você além de simplesmente TkInter e PyQt. wxPython é o que vem imediatamente à mente, mas há uma lista mais completa em wiki.python.org/moin/GuiProgramming e uma lista mais curta dos pacotes GUI mais comuns listados em python.org/doc/faq/gui .
esm

Respostas:

77

PyQt se você estiver desenvolvendo algo sério, especialmente porque as coisas que você aprende irão se traduzir diretamente em trabalhar com Qt em outras línguas também se você precisar, e Qt é provavelmente o melhor kit de ferramentas de interface multiplataforma disponível agora.

Existem apenas duas desvantagens reais (potenciais):

PyQt está disponível apenas sob a GPL. Isso significa que se você liberar seu código, ele deverá estar disponível sob uma licença compatível, nos termos da exceção GPL da Nokia ou sob uma licença comercial (que custa dinheiro). Isso está em contraste com o Qt, que agora está disponível sob a LGPL.

PyQt não é incluído por padrão com instalações Python. Você mesmo terá que empacotar a biblioteca. (Ars Technica tem um bom artigo sobre como fazer isso para Windows e OS X.)

Sam DeFabbia-Kane
fonte
5
Para código aberto, o PyQt concede uma exceção à GPL que especifica a lista de licenças que você pode usar. O texto completo da exceção pode ser encontrado aqui e uma cópia está incluída no pacote fonte do PyQt. riverbankcomputing.co.uk/software/pyqt/license doc.trolltech.com/4.4/license-gpl-exceptions.html
sunqiang
Certo, obrigado. Eu adicionei uma nota.
Sam DeFabbia-Kane
16
A Nokia começou a construir uma biblioteca chamada PySide, que oferece funcionalidade quase idêntica à do PyQt, mas sob a LGPL. Só está disponível em sistemas baseados em * NIX no momento. Mas você pode simplesmente trocar "PyQt4" por "PySide" em suas importações e ter (quase) tudo funcionando. pyside.org
James
O link para a exceção GPL da Nokia está morto.
Stevoisiak
1
Em 2019, PyQt5 foi lançado e PySide2 suporta a maioria das mesmas ligações Qt sob LGPL.
LightCC
40

PyQt é nosso principal kit de ferramentas de GUI agora e após 1 ano de desenvolvimento, não quero retornar a mais nada. É estável, maduro, multiplataforma e totalmente nativo. Mesmo as caixas de diálogo do sistema (por exemplo, para abrir arquivos) são usadas pelo seu sistema operacional.

Eu ajustei meu tema XP e agora minha pele de aplicativos de acordo. Isso cria uma aparência muito profissional, não comparável a um kit de ferramentas como Swing. A API é extensa e vai além das coisas puras da GUI, como widgets. Tem suporte para conectividade de banco de dados, impressão, threading (usei e funciona muito bem), ... Eu até uso para gerar PDF's (sem necessidade de outras bibliotecas externas). Eu recomendaria o livro de Mark Summerfield, embora ' Rapid GUI Programming with Python and Qt ' para você acelerar. Tenha em mente que o Qt vem com um construtor de GUI (designer do Qt) que é o melhor que usei (e experimentei muitos deles).
Eu até uso esse construtor para criar maquetes para mostrar aos usuários (é muito fácil!).

Eu apresentei a 2 outros desenvolvedores aqui e não os ouvi reclamando ...

Wim Verhavert
fonte
10
Uma advertência: Qt apenas parece nativo. Os elementos da interface do usuário são realmente emulados (pelo menos no Mac OS X). A "sensação" dos elementos gráficos é supostamente estranha, às vezes, por causa dessa emulação.
Eric O Lebigot
22

Estou usando tkinterpara pequenos aplicativos com interface simples. Gosto muito, mesmo que a falta de um bom editor WYSIWYG possa ser um problema para um aplicativo maior.

Para aplicativos grandes, PyQtpode ser uma escolha melhor. Tem um designer de tela muito bom, mas o licenciamento pode ser um problema.

Por fim, wxPythonpode ser uma boa alternativa, pois não apresenta essas desvantagens.

luc
fonte
7
Escrevi grandes aplicativos comerciais com tk sem problemas. Escala muito bem. Não é muito bom se seus conjuntos de dados chegam a milhões de itens, mas poucas pessoas desenvolvem aplicativos como esse.
Bryan Oakley
2
Obrigado Bryan pelo feedback. Esta resposta foi dada há muito tempo e agora tenho uma experiência melhor com o Tk e gosto cada vez mais.
luc
Eu atualizei meu anúncio. Mais um pb de ferramentas de desenvolvimento do que um problema de escalabilidade
luc
8

PyQt é realmente fácil de aprender e documentos para Qt também funcionam para PyQt também existem portas para .NET e Java. Portanto, é uma plataforma cruzada de fadas e linguagem cruzada. Além disso, você tem o PyQt integrado no Eric IDE .

O suporte para estilos CSS também é realmente brilhante.

Consulte o novo instalador OpenSuSE para ver o que você pode fazer com ele.

przemo_li
fonte
4

Você pode criar GUIs enormes usando o Tkinter. Se você gosta de experimentar o módulo pytkgen, ele ajuda a criar GUIs do Tkinter a partir de definições JSON: https://github.com/tmetsch/pytkgen

Andre
fonte
1

Eu uso o PyQt. É multiplataforma, fácil de trabalhar e confiável.

Usei o TkInter levemente, e não vejo nenhum ponto em tornar o TkInter melhor do que o PyQt.

Kaymatrix
fonte