Recentemente, estive envolvido em conversas sobre a criação de um modelo Rapidamente para um aplicativo Ubuntu Qt e QtQuick. A idéia é facilitar o desenvolvimento de aplicativos Qt, do conceito ao pacote, como é agora no GTK, no qual o modelo do aplicativo Ubuntu Rapidamente se baseia.
A intenção ainda é usar o Python como a linguagem de programação básica, e a primeira pergunta que vem à mente é: quais ligações do Python devemos usar PyQt ou PySide ?
Eu gostaria de ouvir das pessoas com experiência em ambas as tecnologias quais são os prós e os contras de cada uma, quão bem eles são mantidos, quão bem mapeada é a API do Qt para as ligações etc.
Obrigado!
Respostas:
Tanto o PyQt4 quanto o PySide têm mapeamentos muito semelhantes aos da API Qt. Existem, no entanto, algumas diferenças, minhas opiniões sobre as quais estão descritas abaixo:
Manutenção
Ambos são bem cuidados. O PySide produz muito mais lançamentos regulares no momento: acho que está mais intimamente ligado ao Qt do que ao PyQt4 e, como um projeto mais novo, tem uma comunidade mais ativa no momento. No entanto, essa é apenas a minha impressão e pode estar errada.
O PyQt4 tem a opção de suporte comercial disponível (não sei se isso é verdade para o PySide ou não).
Licença
PyQt4 é liberado sob uma licença comercial ou a GPL ; PySide é lançado sob a LGPL . Para aplicações comerciais, essa é uma diferença significativa.
APIs e versões em Python
O PyQt4 suporta duas APIs diferentes. A versão 1 da API é o padrão para aplicativos python 2.x e a versão 2 da API é o padrão para aplicativos python 3.x.
O PySide suporta apenas uma API, que é aproximadamente equivalente à versão 2. da API do PyQt4. A versão 2 da API (ou a API PySide) é muito mais agradável de trabalhar do que a versão 1. da API do PyQt4. cordas para se
QtCore.QString
voltar novamente. Na versão 2 da API (e no PySide), você apenas usa seqüências de caracteres python. Veja abaixo uma maneira simples de alternar entre PyQt4 e PySide, se você quiser jogar com os dois.A maioria dos códigos que escrevo parece funcionar igualmente bem no PyQt4 e no PySide. Historicamente, eu sempre usei o PyQt4 para GUIs de python, mas a maioria das novidades que escrevo agora usa o PySide (principalmente devido ao licenciamento mais flexível). Eu certamente recomendo que você experimente os dois e veja como os encontra. Se você usa QtVariant.py (abaixo), a alternância entre eles é trivial e quando você toma uma decisão, haverá apenas um arquivo que precisa ser atualizado.
Documentação
A documentação para o PyQt4 e o PySide é gerada automaticamente a partir da documentação principal do Qt . Na minha opinião, a documentação do PySide é uma melhor representação do que você realmente usa, mas, na prática, costumo usar a documentação do Qt de qualquer maneira (é muito fácil traduzir mentalmente a documentação do C ++ para python).
Bibliotecas externas
Se você estiver usando bibliotecas externas, algumas ainda não funcionam com o PySide. Não há muitos que você precise trabalhar com o PySide para ser sincero, mas há alguns anos atrás escrevi um código que usava twisted (com o reator Qt) e matplotlib, o que me obrigou a usar o PyQt4 em vez do PySide . Eu acho que é bem provável que essas bibliotecas já tenham sido atualizadas para suportar as duas, mas eu não verifiquei.
Fazendo o código funcionar com PyQt4 ou PySide
Supondo que você esteja usando o python 2.x, você pode facilmente tornar seu código compatível com o PySide e o PyQt4 criando um QtVariant.py e usando:
como queiras. O QtVariant.py que eu uso fica assim:
fonte
return QtUiTools.QUiLoader().load(uifile)
, pegando o caminho do arquivo sem nenhum desse padrão do QFile.