O Python é uma boa opção para desenvolver interfaces de usuário? Se sim, wxPython ou Tkinter?

12

Estou ansioso para desenvolver um aplicativo de desktop usando Python. Sou iniciante e não tenho experiência suficiente em Python. Eu também sou um programador Java. Embora eu tenha alguma experiência na criação de interfaces de usuário usando o Swing, vejo que os aplicativos desenvolvidos no Swing são muito lentos. Bem, isso pode ser uma das razões pelas quais muitas das principais implementações são feitas em C / C ++ como em navegadores / jogos.

Desenvolver uma interface do usuário em C ++ pode ser uma opção melhor, mas eu prefiro escolher uma linguagem de programação de alto nível em vez de C / C ++. Então, optei pelo Python, presumindo que ele teria um bom desempenho no Java Swing, já que o próprio Python é nativo em C / C ++.

Então, posso prosseguir com essa suposição de que o Python é melhor que o Java Swing para desenvolver uma interface do usuário? Ou você sugere uma linguagem que é melhor que Python para desenvolver UIs? Se eu continuar com o Python, qual kit de ferramentas devo usar o Tkinter ou o wxPython e por quê?

Vamsi Emani
fonte
4
Suas suposições parecem falhas. O Python é construído em C / C ++, mas a JVM também (provavelmente).
user281377
Por que se limitar ao Tkinter e ao wxPython?
Anto
2
Não estou tentando me limitar. Fiquei com a impressão de que esses eram os dois kits de ferramentas conhecidos para o desenvolvimento da GUI.
Vamsi Emani
O IDE do Lazarus, o Free Pascal Compiler e o Object Pascal são uma maneira muito rápida e fácil de desenvolver GUIs.
systemovich 21/09/11

Respostas:

15

Acabei de iniciar o desenvolvimento de um aplicativo de desktop do Windows, usando python. Estou usando o PyQt .

É muito fácil de instalar e colocar em funcionamento. O tutorial aqui: http://zetcode.com/tutorials/pyqt4/firstprograms/ mostra como é fácil, mostrarei o código:

#!/usr/bin/python

# simple.py

import sys
from PyQt4 import QtGui

app = QtGui.QApplication(sys.argv)

widget = QtGui.QWidget()
widget.resize(250, 150)
widget.setWindowTitle('simple')
widget.show()

sys.exit(app.exec_())

Isso abre uma janela para você.

Escolhi Python / PyQt em vez de C # / WPF porque quero aprender python e meu empregador está me dando tempo.

Meu gerente me recomendou o PyQt em outras estruturas, pois, na sua experiência, é mais fácil de usar.

Matt Ellen
fonte
2
Há também PySide ( pyside.org ), consulte stackoverflow.com/questions/1297660/pyside-vs-pyqt
codeape
Eu usei o PySide antes e funciona muito bem. No entanto, o desenvolvimento futuro do PySide está um pouco limitado, porque a Nokia vendeu o Qt.
Jhocking
5

Se você deseja desenvolver uma GUI nativa para Windows ou OSX, aconselho o uso do Tkinter (ou seja, a biblioteca da GUI Tk com roupas python), pois isso o aproxima muito mais da aparência nativa do que o wxPython (wxWidgets para python) . Não estou achando fácil quantificar, mas aos meus olhos as capturas de tela do Windows e OSX . YMMV. Eu sei que Tk ( importante: com o conjunto de widgets Ttk) é muito fortemente nativo.

Se você está desenvolvendo para Linux ... eu não posso aconselhar honestamente um sobre o outro, pois perdi a noção da aparência atual da plataforma preferida. :-)

Donal Fellows
fonte
1
Observe que o Tkinter não fornece muitos widgets usados ​​com frequência. Por exemplo, se você quiser uma barra de progresso, terá que escrever uma ou encontrar uma que outra pessoa tenha escrito.
James
1
Aguarde, mas o wxWidgets usa elementos nativos da GUI. Pelo menos, as ligações C ++ fazem. Não tenho tanta certeza sobre Python.
Zhehao Mao
@ZhehaoMao wxWidgets é uma mistura de elementos nativos e não nativos. Alguns elementos são parecidos com os nativos, mas na verdade são criados para uma API mais uniforme.
Hubert Grzeskowiak
3

Eu diria que é uma boa escolha se você já conhece e gosta de Python. Caso contrário, use a linguagem que você já conhece, que é Java. A única exceção aqui é se este é um projeto de aprendizagem, caso em que eu sugeriria que obter experiência com outros idiomas seria uma boa idéia.

Meu argumento aqui é que o Python não é realmente melhor ou pior que o Java para aplicativos de interface do usuário, portanto, use a ferramenta com a qual você gosta de trabalhar.

jhocking
fonte
1

O único conselho real que se pode dar para todas as perguntas como esta é "experimente e veja se você gosta" - as opiniões de outras pessoas sobre linguagens de programação (particularmente sobre o que pode ser sua linguagem mais amada ou mais odiada) raramente valem muito .

No entanto, meus 5 centavos vale a pena - para obter GUIs simples e rápidas para Windows, a combinação de Python e wxWidgets funciona muito bem. Mas, como eu disse, tente você mesmo - você pode montar algo simples, mas útil em uma hora, mais ou menos, mesmo sem muita experiência em Python (eu certamente não tenho muito).

Neil Butterworth
fonte
1

Caso alguém acabe aqui por meio do mecanismo de pesquisa: você pode gerar rapidamente alguns exemplos do Tkinter usando o gerador de PAGE. Ele gera um código decente que lhe dará a idéia do que será necessário para chegar aonde você deseja ir. Definitivamente, é necessário que você aceite a generalidade, como afirma o autor, mas para alguém que queira testar as águas ou ter uma idéia geral de onde está indo, é uma boa ferramenta. PÁGINA no SourceForge .

Estranhamente
fonte
-1

Eu acho que certos tipos de aplicativos são bastante gerenciáveis ​​para escrever em Python.

Por exemplo, o Task Coach é escrito em Python / wxPython. Eles usam um compilador Python2exe como py2app, py2exe etc para criar executáveis ​​de plataforma cruzada e aparência nativa.

LennyProgrammers
fonte
-1

Se você está restrito ao desenvolvimento no ecossistema do Windows e usa o Visual Studio, considere o Iron Python. Iron Python é Python mais objetos .NET.

mkClark
fonte