Existe alguma estrutura padrão para o desenvolvimento de aplicativos GUI Python.?

20

Existem muitas estruturas para escrever aplicativos GUI usando Python. Mas existe alguma estrutura padrão chave? Por exemplo, temos um pacote .NET / C # no Visual Studio.

Também estou pensando em outras perspectivas. No futuro, se eu der uma entrevista para um trabalho de programador Python, qual estrutura de GUI será considerada?

Eu também me pergunto, não há IDE que integre a linguagem GUI e Python. A escolha do sabor é boa, mas a escolha excessiva se torna uma distração.

RPK
fonte
Não. Não há "padrão". .NET não é padronizado. Não há um corpo de padrões que tenha escrito um padrão para .NET. Há um padrão para C #: ecma-international.org/publications/standards/Ecma-334.htm . Talvez "padrão" não seja o que você quer dizer?
S.Lott
@ S.Lott: Desculpe por esse termo confuso. Eu quis dizer algo diferente. Para aplicativos .NET, o Visual Studio é a melhor ferramenta all-i-one que inclui o construtor de GUI e outras coisas. Raramente as pessoas procuram alternativas do VS.NET. Eu quis dizer em um termo semelhante. Qualquer IDE Python em que a busca de uma solução completa all-in-one termine.
RPK
Você está perguntando sobre o IDE (como o Visual Studio)? Nesse caso, "framework" é a palavra errada na pergunta. Por favor, esclareça o que você está pedindo.
S.Lott
@ S.Lott: Não, não estou perguntando sobre o Visual Studio. Deixe-me esclarecer. Tomemos, por exemplo, o ASP.NET. É uma estrutura, mas se integra muito bem ao IDE do Visual Studio. Você tem todas as ferramentas disponíveis na mesa central. Existe algo para Python?
RPK
O Visual Studio é um IDE == todas as ferramentas para desenvolvimento em um só lugar. "Não estou perguntando sobre o Visual Studio" é exatamente o oposto de "Você tem todas as ferramentas disponíveis na mesa central. Existe algo para o Python?". Você está perguntando sobre o IDE (a versão Python do Visual Studio) ou sobre a estrutura em si. Ou, talvez você esteja perguntando sobre os dois. É muito difícil descobrir do que se trata a questão. Por favor, atualizar a questão para estado muito claramente o que você quer.
precisa saber é o seguinte

Respostas:

12

Você pode escrever aplicativos GUI da API do Win32 em Python, se quiser escrever todo esse código padrão : projeto PyWin32

Pessoalmente, eu gosto do wxPython . É multiplataforma (totalmente compatível com Linux e Windows) e existe há algum tempo ... uma base de suporte decente e muita documentação / código de exemplo. Se você quiser usar isso, dê uma olhada no BoaConstructor . Esse é o IDE para o wxPython (ou, melhor dizendo, um IDE escrito em e para o wxPython). É o único IDE RAD especificamente para Python que me deparei que vale a pena mencionar, salve o editor de interface do usuário do Qt (o editor de interface do usuário do Qt é utilizável para C ++ e PyQT).

Como Peter mencionou em sua resposta, Tk é a interface gráfica padrão para aplicativos Python mais antigos, mas eles realmente não parecem tão bonitos para o usuário final. Existem algumas extensões para isso, que a tornam um pouco melhor e fornecem alguma capacidade de estilizar a interface do usuário, mas, a menos que você esteja mantendo um aplicativo GUI mais antigo, eu não sugeriria me preocupar com isso.

O pyGTK, também já mencionado, seria outra boa opção. Também é multiplataforma, embora eu não tenha tido nenhuma experiência pessoal com o desenvolvimento de GTK no Windows. O PyQT seria uma escolha melhor, IMO - acho que as GUI criadas com a biblioteca Qt têm aparência e função superiores às feitas com o GTK. Também acho o mecanismo de eventos de sinal / slot do Qt mais fácil de trabalhar. YMMV.

Realmente não existe um padrão para o desenvolvimento da GUI do Python, pelo menos não que eu tenha visto, mas dos meus colegas desenvolvedores de Python com os quais trabalhei ao longo dos anos, eles me sugeriram wxPython e PyQT mais do que qualquer outro kits de ferramentas. Não tenho certeza se existe um número substancial de posições de desenvolvimento da GUI do Python por aí, para ser sincero. A maior parte do desenvolvimento do Python que desenvolvi ao longo dos anos foi no lado do servidor, mas isso não quer dizer que agora não há várias empresas que buscam seguir a rota de código aberto para seus aplicativos GUI.

Vai
fonte
Os aplicativos Tkinter podem parecer aceitáveis, geralmente quase indistinguíveis dos aplicativos nativos, se você simplesmente dedicar um tempo para fazê-lo. Concordo, no entanto, que o wxPython parece melhor sem ajustes. Pessoalmente, ainda prefiro o Tkinter porque ele parece bastante bom para a maioria das pessoas e minha produtividade é maior do que com o wxPython.
Bryan Oakley
Tk (Tkinter) não suporta Unicode completo (ex: modelagem de script) se você planeja desenvolver um aplicativo l10n / i18n.
user.dz
12

Tk costumava ser o padrão, mas é sem dúvida simplista e feio. Então, o Qt se tornou bastante popular. O Gtk também é possível, e isso abrange os favoritos nas plataformas Linux-ish.

Mas você está certo, não há realmente nenhuma resposta fácil. A escolha excessiva é bastante comum no mundo do código aberto, afinal.

Peter Eisentraut
fonte
4
Eu escolheria Qt só porque parece mais agradável do que Gtk
TheLQ
1
+1 para uma resposta completa. O Qt é agradável e poderoso, e duas ligações (em termos de licença) estão disponíveis.
ChristopheD
Sem dúvida, não é mais feio no Windows. Ainda assim, não gosto da aparência do código que você precisa escrever. Código feio. Aparência, puramente nativa, e bastante razoável, finalmente.
Warren P
5

Não existe um 'padrão' e eu concordo - a infinidade de opções é uma dor. Quanto a um IDE integrado de 'ferramentas de duas vias' para GUI do Python, também me pergunto por que não parece haver nenhum - talvez porque haja tantos kits de ferramentas da GUI que ninguém deseja investir em um IDE para apenas um dos eles.

Dito isto, o PyQt 4.7 com P3k fornecerá uma GUI maravilhosa (além de muitos outros recursos poderosos). Consulte http://www.riverbankcomputing.co.uk/static/Docs/PyQt4/html/introduction.html - "Este é o guia de referência para o PyQt 4.8.4. PyQt v4 é um conjunto de ligações do Python para a v4 do Qt estrutura de aplicativos da Nokia ".

O PyQt é amplamente utilizado e existem alguns bons livros: consulte http://www.qtrac.eu/pyqtbook.html "Programação rápida de GUI com Python e Qt", entre outros (o livro está desatualizado um pouco - precisa ser atualizado para P3k).

Existem 2 problemas sérios com o PyQt:

1) Possui algumas características distintamente 'não-tônicas', sendo apenas um invólucro fino nas bibliotecas C ++ Qt. Mas eu recomendei o P3k-PyQt 4.7 porque alguns deles foram abordados nos pacotes 'mais recentes e melhores'. Confira este post:

Problemas de design do PyQt

2) Para uso comercial, existem taxas de licenciamento bastante íngremes, tanto para o PyQt quanto para o Qt.

Uma alternativa inovadora para o PyQt é o PySide da Nokia, outro wrapper Python para o Qt que é totalmente de código aberto (que não inclui o licenciamento do Qt).

Saber muito sobre Qt não é algo ruim em termos de mercado, e você obterá isso do PyQt, então eu consideraria (ou PySide) uma consideração séria se você estiver tentando decidir em uma plataforma GUI para se tornar especialista em .

Independentemente do que você escolher, sugiro evitar o tkinter na maior parte do tempo, mesmo que esteja "fora da caixa" com o Python, porque é extremamente limitado e, na IMO, ele tem uma aparência desagradável e desatualizada.

HTH

Vetor
fonte
3

pyGTK é prolífico. É muito fácil de usar e faz com que as GUIs não pareçam ruins.

dan_waterworth
fonte
Quão rica é a comunidade? Com que rapidez as respostas chegam em seu fórum?
RPK 07/01
1
@RPK, não faço ideia, nunca tive que pedir ajuda, tudo é muito fácil de usar.
dan_waterworth
Não tenho certeza de que "prolífico" seja a palavra certa. "produzindo descendentes, jovens, frutas etc., abundantemente; altamente frutíferas: uma pereira prolífica" Talvez "popular" ou "fantástica".
S.Lott
@ S.Lott, prolífico: "Da mesma forma, produz resultados ou trabalha em abundância". (segunda definição wikcionária). "Servir para produzir; frutífero de resultados; ativo; como um cérebro prolífico; uma controvérsia prolífica do mal". (Webster's Revised Unabridged Dictionary (1913 + 1828))
dan_waterworth
prolífico como em "pyGTK produz muitas aplicações?" Parece tenso. As pessoas produzem aplicações. O pyGTK é uma fundação popular, talvez, mas não parece o produtor.
precisa saber é o seguinte
0

Gtk3 é uma estrutura de GUI muito madura. Possui ligações Python nativas (GObject Introspection) e muita documentação . Se você estiver fazendo um pouco de GUI, considere usar o Anjuta . Anjuta possui uma interface de arrastar e soltar para configurar seus widgets facilmente.

O WxWidgets é muito bom, no entanto, não há uma maneira fácil de gerar retornos de chamada Python dinamicamente, como o Anjuta faz para o Gtk.

O PyGtk agora está obsoleto em favor das ligações Gtk3 a Python (GObject Introspection)

O PyQt também é um participante da GUI do Python, mas não possui uma comunidade grande.

O BoaConstructor é mantido por mais tempo e seria tolo de usar.

theGtknerd
fonte