¿Python es una buena opción para desarrollar interfaces de usuario? Si es así, ¿wxPython o Tkinter?

12

Tengo muchas ganas de desarrollar una aplicación de escritorio con Python. Soy un principiante y no tengo suficiente experiencia en Python. También soy un programador de Java. Aunque tengo algo de experiencia en la creación de interfaces de usuario con Swing, veo que las aplicaciones desarrolladas en Swing son demasiado lentas. Bueno, esta podría ser una de las razones por las cuales muchas de las principales implementaciones se realizan en C / C ++ como en los navegadores / juegos.

Desarrollar una interfaz de usuario en C ++ podría ser una mejor opción, pero prefiero elegir un lenguaje de programación de alto nivel en lugar de C / C ++. Así que opté por Python suponiendo que funcionaría bien sobre Java Swing, ya que Python está construido de forma nativa en C / C ++.

Entonces, ¿puedo seguir con esta suposición de que Python es mejor que Java Swing para desarrollar una interfaz de usuario? ¿O sugieres un lenguaje que sea mejor que Python para desarrollar interfaces de usuario? Si sigo adelante con Python, ¿qué kit de herramientas debo usar Tkinter o wxPython y por qué?

Vamsi Emani
fuente
44
Sus suposiciones parecen defectuosas. Python está construido en C / C ++, pero también lo es la JVM (muy probablemente).
user281377
¿Por qué limitarse a Tkinter y wxPython?
Anto
2
No estoy tratando de limitarme. Tenía la impresión de que estos eran los dos kits de herramientas bien conocidos para el desarrollo de GUI.
Vamsi Emani
Lazarus IDE, Free Pascal Compiler y Object Pascal son una forma muy rápida y fácil de desarrollar GUI.
systemovich

Respuestas:

15

Acabo de comenzar el desarrollo de una aplicación de escritorio de Windows, usando Python. Estoy usando PyQt .

Es muy fácil de instalar y poner en marcha. El tutorial aquí: http://zetcode.com/tutorials/pyqt4/firstprograms/ muestra cuán fácil, mostraré el 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_())

Eso te abre una ventana.

Elegí Python / PyQt sobre C # / WPF porque quiero aprender Python y mi empleador me está dando el tiempo.

Mi gerente me recomendó PyQt sobre otros marcos, ya que en su experiencia es más fácil de usar.

Matt Ellen
fuente
2
También hay pyside ( pyside.org ), consulte stackoverflow.com/questions/1297660/pyside-vs-pyqt
codeape
He usado PySide antes y funciona bastante bien. Sin embargo, el futuro desarrollo de PySide está en un limbo porque Nokia ha vendido Qt.
jhocking
5

Si está buscando desarrollar una GUI nativa para Windows u OSX, le aconsejo que use Tkinter (es decir, la biblioteca GUI Tk con ropa pitónica) ya que eso lo acerca mucho más al aspecto nativo que wxPython (wxWidgets para python) . No me resulta fácil cuantificar, pero a mis ojos las capturas de pantalla de Windows y OSX . YMMV. Sé que Tk ( importante: con el conjunto de widgets Ttk) tiene un aspecto muy nativo.

Si está desarrollando para Linux ... Realmente no puedo aconsejar honestamente uno sobre el otro, ya que he perdido la noción de cuál es el aspecto de plataforma favorito actual. :-)

Compañeros de Donal
fuente
1
Tenga en cuenta que Tkinter no proporciona muchos widgets de uso común listos para usar. Por ejemplo, si desea una barra de progreso, tendrá que escribirla usted mismo o encontrar una que haya escrito otra persona.
James
1
Espere, pero wxWidgets usa elementos de GUI nativos. Al menos, los enlaces de C ++ sí. No estoy tan seguro sobre Python.
Zhehao Mao
@ZhehaoMao wxWidgets es una mezcla de elementos nativos y no nativos. Algunos elementos se parecen a los nativos, pero en realidad están diseñados a medida para una API más uniforme.
Hubert Grzeskowiak
3

Diría que es una buena opción si ya sabes y te gusta Python. De lo contrario, use el lenguaje que ya conoce, que es Java. La única excepción aquí es si este es un proyecto de aprendizaje, en cuyo caso sugeriría que adquirir experiencia con otros idiomas sería una buena idea.

Mi punto aquí es que Python no es realmente mejor o peor que Java para aplicaciones de interfaz de usuario, así que use la herramienta con la que le guste trabajar.

jhocking
fuente
1

El único consejo real que uno puede dar para todas las preguntas como esta es "pruébelo y vea si le gusta": las opiniones de otras personas sobre los lenguajes de programación (particularmente sobre cuáles pueden ser sus lenguajes más queridos u odiados) rara vez valen mucho. .

Sin embargo, mis 5 centavos valen: para obtener GUI de Windows rápidas y simples, la combinación de Python y wxWidgets funciona muy bien. Pero como dije, pruébalo tú mismo: puedes armar algo simple pero útil en una hora más o menos, incluso sin mucha experiencia en Python (ciertamente no tengo mucho).

Neil Butterworth
fuente
1

En caso de que alguien termine aquí a través del motor de búsqueda: puede generar rápidamente algunos ejemplos de Tkinter utilizando el generador PAGE. Genera un código decente que le dará la idea de lo que se necesitará para llegar a donde desea ir. Definitivamente requiere que aceptes la generalidad, como dice el autor, pero para alguien que quiera probar las aguas o tener una idea general de hacia dónde se dirige, es una buena herramienta. PÁGINA en SourceForge .

Curiosamente
fuente
-1

Creo que ciertos tipos de aplicaciones son bastante manejables para escribir en Python.

Por ejemplo, Task Coach está escrito en Python / wxPython. Utilizan un compilador Python2exe como py2app, py2exe, etc. para crear ejecutables multiplataforma y de aspecto nativo.

LennyProgrammers
fuente
-1

Si está restringido a desarrollar en el ecosistema de Windows y usa Visual Studio, considere Iron Python. Iron Python es Python más objetos .NET.

mkClark
fuente