Libertonia
Portada · Todo · Software Libre · Desarrolladores · Comunidad · Internet · Tecnología · Meta · Diarios
Programando GUIs en Python

Programación
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
< [Rumor] Linux en la Generalitat Valenciana en 2005 (9 comments) | Instalación por red de NetBSD-current (0 comments) >
Enlaces Relacionados
· Python
· este
· aquí
· esto
· su web
· Aquí
· Spectix
· lista de Python
· aquí[2]
· gtk
· FAQ
· aquí[3]
· Glade
· aquí[4]
· Qt Designer
· wxPython
· wxWindows
· wxPyWiki
· aquí[5]
· aquí[6]
· wxDesigner
· PythonCard
· Python Programming on Win32
· Tkinter
· wxPython[2]
· More on Programación
· Also by Ariel

Menu
· crear cuenta
· FAQ
· búsqueda
· Fuentes de Noticias

Login
Nueva cuenta
Usuario:
Contraseña:

Ver: Modo: Orden:
Programando GUIs en Python | 7 comentarios (7 temáticos, editoriales, 0 ocultos)
Excelente artículo (4.75 / 4) (#1)
por jorginius ("jorginius" en Google Mail) a las Tue Dec 31st, 2002 at 04:55:49 PM CET
(Información Usuario) http://www.rodriguezmoreno.com

Buen trabajo :-), aunque he visto algo que me chirría un poco. Verás:

Tkinter Se puede decir que es el estándar en Python [...] 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?)

Tk, que es el toolkit que usa por debajo Tkinter, dibuja sus propios widgets en Windows y en Linux (y en todas las demás plataformas soportadas, que son un montón). Así que en Windows y en Linux el aspecto de una aplicación con Tkinter es el mismo: levemente parecido a Motif (que, por cierto, no pega ni con cola en Windows y a mí tampoco me gusta :-)).

Las aplicaciones Python en Windows que has visto que usan widgets nativos en realidad han sido programadas con el wrapper para las MFC de Python (win32ui), que viene por defecto con Pythonwin (la distribución de Python para Windows).

La verdad es que este wrapper (y Pythonwin en conjunto) es super cómodo (ok, si ya conoces MFC ;-)) y espectacular: puedes programar tus propios controles ActiveX con Python e importarlos sin problemas en aplicaciones MFC/C++, escribir plugins del Netscape, usar los demás controles registrados en el sistema, etc.

Además, aprovechando que el motor de scripting del IExplorer es extensible y modular, también te registra Python como lenguaje soportado por ActiveScripting, con lo que además de JScript y VBScript, puedes insertar Python en el código html para que éste sea interpretado del lado del cliente (y puedes desplegar diálogos gráficos y demás con win32ui dentro de la web).

Otra cosa: las MFC son una colección de clases C++ que encapsulan parte del API de Windows (la parte de la GUI y poco más), así que en realidad no se podría decir que son los widgets nativos, aunque ahora nadie programe con los "widgets", el bucle de mensajes y demás a pelo.

Un ¿gui? que te saltas y es multiplataforma es el módulo de las curses. Tiene sus ventanitas y demás pero claro, más que un gui es un tui (text user interfaz :-)).



Python en ASP (2.33 / 3) (#2)
por musg0 a las Tue Dec 31st, 2002 at 07:56:36 PM CET
(Información Usuario) http://helvete.escomposlinux.org

Como me digas que se puede usar Python para programar páginas ASP y llamar a los objetos COM como desde la mierda de VbScript me parece que le voy a meter presión a mi jefe para que lo usemos como preparación al puto .NET que dentro de poco tendré la obligación de aprender.

Joder, es que VbScript es el peor lenguaje del mundo. Te obliga a programar mal, y Python es uno de los mejores lenguajes que he probado.

[ Padre ]


Pues parece que sí se puede (4.00 / 4) (#3)
por jorginius ("jorginius" en Google Mail) a las Tue Dec 31st, 2002 at 08:20:54 PM CET
(Información Usuario) http://www.rodriguezmoreno.com

Porque el ISS tira también del ActiveScripting (tres hurras por el diseño con componentes), pero ojo que eso del ASP ya no lo he probado.

El enlace de la documentación en el que se contempla la posibilidad, en ActiveState, los creadores de las extensiones (libres) de Windows para Python (y para Perl, y...).

Y un enlace de alguién que lo está haciendo: http://www.4guysfromrolla.com/webtech/082201-1.shtml

[ Padre ]


 
Más GUIs para Python (4.00 / 2) (#4)
por ch3m4 a las Wed Jan 1st, 2003 at 06:02:31 AM CET
(Información Usuario) http://zaralinux.org

Fecilidades por la recopilación. Tan sólo por completitud añadiría algunos GUIs más. Ya está comentado el Pythonwin (algo más que el IDE de python para windows) que emplea las MFC. Añadiría el anygui, un intento de agrupar varios interfaces gráficos en uno al estilo de la DB API2, y el PyFOX, basado en FOX, un toolkit multiplataforma para OpenGL.





Más madera (4.33 / 3) (#5)
por jorginius ("jorginius" en Google Mail) a las Wed Jan 1st, 2003 at 12:15:04 PM CET
(Información Usuario) http://www.rodriguezmoreno.com

Del mismo estilo que FxPy, es PyFLTK, un wrapper del Fast Light ToolKit (FLTK), un toolkit multiplataforma (Windows, X11, MacOS X) en C++, del cual sus autores dicen que "provides modern GUI functionality without the bloat"

También está WPY, al estilo de anygui: soporta varias plataformas (Windows 3.x/9x/NT/2000 y UNIX) y en cada una ellas usa widgets "nativos" (en UNIX usa TK y en Windows las MFC).

La verdad es que hay un buen montón de wrappers, y herramientas como SIP o el mega-fantástico SWIG hacen que no sea demasiado complicado añadir nuevos.

[ Padre ]


 
delphy como gui para python (3.00 / 1) (#6)
por egapaz a las Fri Jan 3rd, 2003 at 11:15:44 AM CET
(Información Usuario)

despues de leer el artululo, magnifico por cierto, me he encontrado con esto: http://www.atug.com/andypatterns/pythonDelphiTalk.htm
cuenta como utilizar python y delphy juntos, e incluso utilizar delphy como 'gui' de python.
Hasta ahora vengo utilizando el viejo foxpro (lenguje de la familia dbase) en su ultima version para ms-dos 2.6, para hacer aplicaciones de gestion empresarial, despues de muchas vueltas me he decidio a utilizar python para sustituirlo, encontrar la base de datos no hay problema, pero aun no tengo la herramienta de diseño de pantallas y listados :-(
Como soy de la vieja escuela, el tema iconos y demas no me llama la atencion, creo que para contabilizar un recibo o hacer una factura, lo mas eficiente sigue siendo un entorno de texto, ¿alguien tiene un enlace a mano con alguna herramienta de diseño 'tui' (text user interface, como se comento mas arriba ;) para hacer las pantallitas y los listados?
Un saludo




Formularios y curses (4.00 / 1) (#7)
por jorginius ("jorginius" en Google Mail) a las Fri Jan 3rd, 2003 at 12:22:25 PM CET
(Información Usuario) http://www.rodriguezmoreno.com

Bueno, en el editor de formularios de GNU Enterprise han incluido un generador de código para curses recientemente, aparte del de gtk2 y el de wxPython.

En GNU Enterprise tienes un Designer que te permite crear esos formularios y después un traductor que convierte esas plantillas en xml a curses o a lo que quieras, todo en y para Python. También puedes escribir las plantillas a mano con un buen editor de xml.

Todo esto tiene una pega: el proyecto está muy en pañales y no sé hasta qué punto se le puede dar uso. Yo lo sigo en "las noticias", y no me he puesto a hacer nada con él.

De todas formas, los tiempos cambian y el modo texto para las aplicaciones de gestión se desvanece. Vete haciendote a la idea de que algún día habrá que dar el salto ;-)

[ Padre ]


 
Programando GUIs en Python | 7 comentarios (7 temáticos, editoriales, 0 ocultos)
Ver: Modo: Orden:

ecol Logo Powered by Scoop
Todas las Marcas Registradas y copyrights de esta página son propiedad de sus respectivos dueños.
Los comentarios son propiedad del que los escribe.
Los iconos de las noticias y el logotipo son propiedad de Javier Malonda.
El Resto © 2002 Escomposlinux.org y aledaños.

Puedes sindicar los contenidos de libertonia en formato RSS 1.0 y RDF 0.9. También se puede sindicar la cola de envíos pendientes de moderación.

El proyecto escomposlinux.org está dedicado a la memoria de tas

crear cuenta | faq | búsqueda