JPO : Webinar d'information sur nos formations → RDV mardi à 17h30.

PyGTK: la herramienta de creación de interfaz gráfica en Python

pygtk

PyGTK es un módulo de Python que permite crear una interfaz gráfica de usuario (GUI) para una aplicación. Descubre todo lo que necesitas saber sobre esta herramienta y su sucesora PyGObject: cómo funciona, ventajas e inconvenientes, cursos, etc.

Una interfaz gráfica de usuario es esencial para una aplicación moderna. Permite a los usuarios interactuar con facilidad. Para crear una GUI de este tipo para un programa en Python, solemos utilizar el módulo PyGTK.

¿Qué es PyGTK?

Creado por James Henstridge, PyGTK es un módulo para crear interfaces gráficas de usuario en Python que permite a los usuarios interactuar con una aplicación rápidamente.

Su nombre es una combinación del lenguaje Python y GTK: GIMP ToolKit. De hecho, es una colección de envoltorios de Python para la biblioteca de interfaz gráfica de usuario GTK+.

Incluye muchos elementos gráficos y otras herramientas de programación para construir aplicaciones. PyGTK es muy intuitivo y resulta ideal para la creación rápida de prototipos.

Este software de código abierto con licencia LGPL también es una biblioteca multiplataforma. Se puede instalar en Unix y Win32. Es una extensión del proyecto GNOME.

¿Para qué se utiliza PyGTK?

PyGTK se utiliza principalmente para crear una interfaz gráfica de usuario (GUI) en Python. Una GUI consiste en una ventana y su colección de widgets, incluyendo cuadros de diálogo, casillas de verificación, botones, texto y otros elementos.

La GUI envía una señal al programa tan pronto como el usuario interactúa con esta ventana o uno de sus widgets. Esto es así incluso si el usuario solo pasa el cursor del ratón por encima. El objetivo es informar al programa de que puede ser necesaria una respuesta.

stocks-gdded1dff3_640

Ventajas y desventajas de PyGTK

Uno de los principales puntos fuertes de PyGTK es su alto nivel de rendimiento, especialmente en las versiones 0.X para GTK 1.2. La versión 2.0 para GTK 2.X sigue siendo muy buena.

Esta herramienta también proporciona una API eficiente basada en la propagación de retrollamadas. Cada componente puede enviar una señal, que se transmite hacia arriba hasta que es capturada y se genera una llamada de retorno.

Una herramienta de creación de interfaces llamada Glade permite generar una referencia XML para la interfaz que la biblioteca puede utilizar directamente.

Además, PyGTK ofrece un alto nivel de portabilidad de aplicaciones a Windows. En general, esta portabilidad puede realizarse sin tener que modificar el código.

Por último, la documentación de esta herramienta es muy completa. Hay excelentes tutoriales para ambas versiones, y la referencia es particularmente extensa para 2.X.

Por otro lado, la principal debilidad de PyGTK es el tamaño del código. Aunque gran parte de él parece superfluo, es esencial.

Para usar cualquier elemento, es necesario construirlo, luego llamarlo, configurarlo con sus métodos, posicionarlo y luego mostrarlo con el método show (). Hay al menos tres métodos de llamada para cada objeto. En consecuencia, el código fuente es voluminoso.

Los módulos PyGTK

Existen diferentes módulos para PyGTK. Pango es una biblioteca de diseño y dibujo textual centrada en la internacionalización.

Cairo es una biblioteca de gráficos 2D compatible con distintos tipos de dispositivos. La biblioteca ATK proporciona herramientas de accesibilidad como interfaces de usuario, lupas o dispositivos de entrada alternativos.

El módulo GTK se encarga de la interfaz de usuario, mientras que Glade se utiliza para crear interfaces gráficas a partir de archivos XML. Por último, GObject es la clase base de las clases PyGTK y proporciona las funciones y atributos comunes.

Las clases de PyGTK

Veamos ahora las diferentes clases de PyGTK. La clase gtk.Widget proporciona un conjunto estándar de métodos y señales para los widgets.

La clase gtk.Window es una ventana que contiene una barra de título y botones para redimensionarla, cerrarla o moverla.

El gtk.Dialog se utiliza para crear una ventana emergente que contiene información y opciones que el usuario puede elegir. El gtk.Button es un widget de botón que envía una señal cuando se pulsa sobre él. Por lo general se muestra como un botón pulsador con una etiqueta de texto y se utiliza para adjuntar una función de llamada de retorno.

Por su parte, gtk.Label muestra texto en modo solo lectura. Con gtk.Layout, es posible crear un área desplazable con widgets hijos y gráficos personalizados que pueden desplazarse indefinidamente.

La gtk.Toolbar es un contenedor que almacena y mantiene una barra horizontal o vertical de botones y widgets. El widget gtk.ComboBox se utiliza para seleccionar elementos de una lista.

Para añadir una barra de desplazamiento horizontal o vertical, se utiliza gtk.Scrollbar. La clase gtk.ProgressBar se utiliza para mostrar el progreso de un proceso largo. Finalmente, el gtk.Menu agrupa objetos de elementos de menú a los que el usuario puede acceder, realizando funciones de la aplicación cuando se activan.

¿Qué aplicaciones utilizan PyGTK?

Muchas aplicaciones utilizan PyGTK. Ejemplos bien conocidos incluyen el instalador Anaconda, BitTorrent, SoundConverter o Ubuntu Software Center.

Otros ejemplos incluyen Deluge, Emesene, Flumotion, Exaile, gDesklets, Gajim, GIMP y Gedit, Gramps GNOME Sudoku, Jokosher, el cliente de microblogging Gwibbler, PyMusique, puddletag, Tryton, ROX Desktop, Pybliographer, el IDE Wing, Comix o incluso el instalador de Ubuntu Ubiquity.

¿Qué es PyGObject?

Con el lanzamiento de la versión 3 de GTK, PyGTK es reemplazado por PyGObject que utiliza la introspección GObject para generar bindings para Python y otros lenguajes muy rápidamente. Esto eliminará el retraso entre las actualizaciones de GTK y los bindings en diferentes lenguajes.

Esta herramienta proporciona un envoltorio que se utiliza en programas Python cuando se accede a bibliotecas GObject: un sistema de objetos utilizado principalmente por GTK, GLib, GIO, GStreamer.

Cualquier biblioteca que utilice la introspección GObject es accesible dinámicamente para PyGObject. Esto reemplaza la necesidad de módulos separados como PyGTK, GIO y python-gnome para construir una aplicación completa de GNOME 3.0.

Tan pronto como se añade una nueva funcionalidad a la biblioteca GObject, está inmediatamente disponible como una API de Python sin necesidad de un intermediario.

El envoltorio PyGObject y la biblioteca GObject están licenciadas bajo GNU LGPL. Por tanto, son adecuadas para su uso en software libre y propietario. Muchas aplicaciones ya las utilizan, tanto para pequeños scripts de un solo uso como para grandes aplicaciones.

Algunos ejemplos son Ex Falso, Gramps, Meld, Pitivi, PyChess y Quod Libet. Aunque PyGObject ya ha sustituido a PyGTK, la portabilidad lleva tiempo para muchos programas.

Conclusión: PyGTK, un módulo Python muy útil para la creación de interfaces gráficas de usuario

El módulo PyGTK de Python facilita la creación de interfaces gráficas de usuario avanzadas para aplicaciones. Es una herramienta de código abierto y multiplataforma que ofrece una gran flexibilidad, ahora sustituida por PyGObject.

Para aprender a utilizar PyGTK, PyGObject y Python, puedes elegir DataScientest. Nuestros cursos de formación en Data Science incluyen un módulo dedicado a este lenguaje de programación.

Estos diferentes cursos te permitirán adquirir todas las competencias necesarias para trabajar como Data Analyst, Data Engineer, Data Scientist o incluso Data Product Manager.

Todos nuestros programas se cursan íntegramente a distancia online y son bonificables con FUNDAE. ¡No esperes más y descubre DataScientest!

Ya sabes todo lo que hay que saber sobre PyGTK. Para más información sobre el mismo tema, descubre nuestro dosier completo sobre Python y nuestro dosier sobre NumPy.

¿No está disponible?

Déjenos su dirección de correo electrónico para que podamos enviarle los nuevos artículos cuando se publiquen.