Programando GUIs en Python
|
|
Por Ariel
departamento a-ver-si-sale-la-ventana , Sección Desarrolladores Puesto a las Tue Dec 31st, 2002 at 11:01:59 PM CET
|
|
Existen distintas librerías con las que desarrollar aplicaciones con interfaces
gráficas de usuario (GUI) en Python.
Cada toolkit tiene ventajas y desventajas, la mayoría son multiplataforma (lo cual
es un punto notable a favor). Desde mi experiencia (poca, y posiblemente equivocada)
voy a intentar describir alguno de ellos:
|
- Tkinter
Se puede decir que es el estándar en Python. Se distribuye junto con el propio intérprete
de Python, es multiplataforma y está muy bien documentado. Un
excelente lugar donde conocer Tkinter es
este
o bien dentro de la propia web de Python,
aquí.
En mi opinión su mayor ventaja es que se distribuye junto con el intérprete. Es muy sencillo
de aprender, si ya sabes Python, escribir en Tkinter una aplicación con una mínima
funcionalidad no te llevará más de un par de horas (eso es lo que me llevó a mí programar
esto sin saber nada de Tkinter y soy bastante torpe).
Pegas: Hay pocos widgets (cierto, están todos los habituales pero se echa en
falta alguno más). Un ejemplo, un clásico ListBox con scroll no existe. Hay que crear el
ListBox y el ScrollBar por separado. Es cierto que esta operación son tres líneas:
self.barrascroll_lista = Scrollbar(self.panel)
self.lista = Listbox (self.panel, yscrollcommand =self.barrascroll_lista.set, selectmode=SINGLE)
self.barrascroll_lista.config (command=self.lista.yview)
pero se agradecerían widgets de más alto nivel. Otro problema que le veo (ésta es una
opinión personal) es que en Linux, las aplicaciones se ven "feas". Los widgets son
bastante poco atractivos (los de OpenMotif creo que utliza...). En windows esto no
sucede ya que usa los widgets nativos (MFC se llaman ¿no?)
- Tix
Tix significa Tk Interface eXtension. Así podemos decir que
Tix es una extensión de Tkinter. También se distribuye con la distribución estándar de Python.
Sin embargo en la versión de Python 2.2 (no sé si la 2.1 también estará afectada) de Windows
"se olvidaron" de incluirlo. Esto significa que si tu script utliza Tix y quieres ejecutarlo en
windows tendrás que bajarlo e instalarlo.
No he probado a fondo Tix, pero parece que añade unas cuantas funcionalidades a Tkinter.
Si quieres saber más de Tix visita su web.
Aquí tienes sus widgets.
Si usas Tkinter y/o Tix puedes utilizar
Spectix, una aplicación para crear interfaces de forma gráficamente. Personalmente, no
me gustó demasiado (aunque hay gente que le saca partido).
- Pmw
Pmw es otro intento de construir widgets de alto nivel utilizando Tkinter. La documentación
tiene buena pinta y he oido hablar bastante bien de él (en la
lista de Python). Puedes encontrar Pmw aquí.
- PyGTK
Empezamos ya con cosas mayores. PyGTK permite utilizar las librerías
gtk en tus scripts. La documentación parece
buena (digo parece, porque uno sólo aprecia la bondad o maldad de una documentación cuado tiene que
usarla, y yo nunca he usado PyGTK), con un
FAQ que parece tratar todos los temas importantes. Su página principal puedes
encontrarla aquí. No hay
que olvidar además, que podrás utlizar Glade.
La única pega que le veo es el tema de la portabilidad. En la documentación
de PyGTK, se trata el tema de cómo portar una aplicacion con PyGTK a Win32, pero
a mí no me ha quedado nada claro, y distribuir una aplicación para usuarios de Windows
que requiera una instalación un poco "trabajosa" (algo más que un doble click) está abocado
al fracaso (esto también es una opinión personal).
- PyQT
Todo lo dicho en el caso anterior es reproducible en este, sólo que la portabilidad se complica
ahora aún más por el tema de las licencias. Puedes conocer PyQT
aquí. Y sí también se puede utilizar
Qt Designer.
- wxPython
Esto me lo he dejado para el final. wxPython
, que no es más que la adaptación de wxWindows
a Python. En mi opinión, y si damos importancia a la portabilidad, wxPython es la solución
óptima. Si escribimos una aplicación ya la ejecutamos en Linux, utilizará gtk para mostrar
las ventanas, y en windows utilizará las ventanas nativas de windows.
La documentación no es todo lo buena que debiera, aunque con un poco de buena
voluntad se sale adelante. Por ejemplo, leyendo el
wxPyWiki podemos
hacernos una idea del funcionamiento de wxPython, pero se queda corto en muchos aspectos.
En estos casos no queda más remedio que leer la documentación de wxWindows (para C++). Lo
dicho, con buena voluntad se sale adelante. Sin embargo existe una aplicación de prueba fantástica
que se puede descargar
aquí.
Se trata de una aplicación que muestra todos los widgets en acción junto con el código para
lograr esos efectos. De verdad, ayuda mucho.
Existe un proyecto de desarrollo de un RAD para Python utilizando wxPython. Su nombre
es Boa y puedes probarlo aquí.
Nunca lo he usado, pero parece que promete. Quizá cuando sea estable (aún es alpha)
contribuya a la popularidad de Python.
No me resisto de comentar otra aplicación. wxDesigner.
Ni es libre, ni es gratuita pero ayuda bastante si trabajas con wxWindows y Python (o C++ o Perl). Puedes
descargarte una versión de evaluación que no permite guardar documentos (o así era cuando lo bajé yo).
Esta aplicación me pareció especialmente útil e interesante.
Bueno, me he olvidado deliberadamente de PythonCard
por el desconocimiento que tengo de este proyecto. Si no me equivoco es un intento de
simplificar el funcionamiento de wxPython con clases de más alto novel.
Conclusión personal: En mi opinión, para programar aplicaciones multiplataforma Tkinter o
wxPython. A estos dos entornos se les dedica un apartado en
Python Programming on Win32.
Aquí tienes el de Tkinter y el de wxPython
Si vas a realizar una aplicación para un sistema específico, Linux por ejemplo, podrías
considerar PyQT o PyGTK. Sin embargo, son entornos muy grandes y la curva de aprendizaje,
aunque menos pronunciada que en otros lenguajes, puede ser dura. Yo aprendería
wxPython que sirve para casi todo (aunque no he encontrado nada para justificar el casi).
Un saludo
|
|
|