Desarrollo de aplicaciones con Python 3, Glade y GTK+ 3 en Windows

22
11889

Introducción

En GNU/Linux desarrollar aplicaciones con Python 3, Glade y GTK+ 3 es muy fácil, los paquetes vienen por defecto en la mayoría de distribuciones.

Gracias a Glade podemos crear interfaces de usuario rápida y fácilmente y luego usarlas en conjunto con Python. Para lograrlo se usa PyGObject gracias al sistema de introspección que ofrece GNOME, lo que facilita mucho el desarrollo rápido de aplicaciones (RAD); además es posible usar nuestras interfaces creadas con Glade desde otros lenguajes de programación.


El problema se presenta cuando queremos usar nuestras aplicaciones en Microsoft Windows, puesto que hasta hace poco no existían oficialmente los paquetes para éste sistema.

Con el presente tutorial se pretende que las aplicaciones que se han hecho en GNU/Linux usando Python 3 y GTK+ 3 se ejecuten sin problemas en Windows.

Requerimientos

  • Python 3.3
  • Gtk+ 3
  • Glade 3.14 o superior (diseñador de interfaces gráficas)
  • PyGobject

Instalación en Windows

Se empezará creando una carpeta llamada software u otra de su preferencia y guardaremos en ella todos los paquetes que se descarguen.

Descarga de paquetes de instalación

Descargar Python 3.3

Se puede descargar desde la página oficial de Python www.python.org

Descargar instalador Python
Descargar instalador Python

Al hacer clic en el vínculo (Windows Installer) se descargará el instalador de Python.

Descargar Glade

Sitio de descarga: glade.gnome.org

Tanto la versión de Python como la de Glade son de 32 bits, pero se ejecutan sin problemas en sistemas de 64 bits

Página Glade
Página Glade
Descargar PyGObject

Sitio de descarga: https://wiki.gnome.org/PyGObject

Debemos descargar la versión para GTK+ 3

PyGObject
PyGObject
PyGObject en Google code
PyGObject en Google code

Instalación de los paquetes

Bien hasta este punto ya tenemos todos los paquetes descargados en la carpeta software y tal como hemos descargado cada paquete empezaremos primero con la instalación de Python.

Paquetes descargados
Paquetes descargados
Instalación de Python

La instalación es muy sencilla, el asistente nos guiará en el proceso; dejamos todas las opciones marcadas por defecto.

Programa de instalación Python
Programa de instalación Python

Como se ve en la imagen, Python se instala en la carpeta C:\Python33\ por defecto, lo dejamos como está y continuamos con la instalación.

Carpeta de instalación de Python
Carpeta de instalación de Python

En este punto de la instalación seleccionamos la opción Add python.exe to Path, con la finalidad que cuando lancemos un interprete de Python se ejecute sin la necesidad de agregarlo al path del sistema de forma manual.

Agregar Python al Path del sistema
Agregar Python al Path del sistema

Luego finalizamos la instalación y Python se habrá instalado en nuestro sistema.

Instalación de Glade

La instalación de Glade no representa mayor complicación ejecutamos el programa de instalación y seguimos los pasos del asistente.

Instalar glade
Instalar glade
Instalación de PyGObject

Habíamos descargado el paquete pygi-aio-3.4.2rev11.7z, éste paquete incluye PyGObject para Python 3.3 y las librerías GTK+ 3 para Windows, que está comprimido con 7-zip, lo descomprimimos y tendremos una carpeta con el siguiente contenido:

Contenido de la carpeta pygi-aio-3.4.2rev11.7
Contenido de la carpeta pygi-aio-3.4.2rev11.7

Ahora copiamos la carpeta gtk a C:\Python33\Lib\site-packages que es donde se instalan los paquetes de terceros para Python.

Copiar carpeta gtk
Copiar carpeta gtk
Carpeta gtk en C:\Python33\Lib\site-packages
Carpeta gtk en C:\Python33\Lib\site-packages

Volvemos a nuestra carpeta pygi-aio-3.4.2rev11 y abrimos la carpeta py33 por la versión de Python que es la 3.3

Contenido de la carpeta py33
Contenido de la carpeta py33

Seleccionamos todo el contenido de la carpeta py33 y lo volvemos a copiar dentro de la carpeta C:\Python33\Lib\site-packages, se nos pedirá mezclar y sobrescribir, respondemos afirmativamente. El contenido de la carpeta site-packages quedaría como se muestra en la siguiente imagen:

Copiar el contenido de la carpeta py33 en C:\Python33\Lib\site-packages
Copiar el contenido de la carpeta py33 en C:\Python33\Lib\site-packages

Comprobación de la correcta instalación de PyGobject y GTK+ 3

Para comprobar que nuestra instalación ha sido correcta abrimos el IDLE de Python e importamos las librerías GTK+ 3 y si no tenemos ningún mensaje de error todo habrá sido hecho correctamente.

from gi.repository import Gtk

PyGobject y GTK+ 3 instalados correctamente
PyGobject y GTK+ 3 instalados correctamente

 

22 COMENTARIOS

    • Bueno las dos grandes librerías gráficas del escritorio GNU/Linux son GTK y QT, cada quién elige la de su preferencia. No hay porqué pelearse.

      La diferencia de GTK con QT es que el segundo es un framework, muy bueno por cierto, pero al ser un framework consume un poco más de recursos.

      Por ejemplo Mozilla Firefox, Google Chrome, LibreOffice y un largo etcétera están hechos con GTK; esto no quiere decir que sea mejor que QT, cada quién deberá elegir el que se ajuste a sus preferencias y necesidades, no deseamos causar una discusión al respecto.

    • Será porque en Linux ya está todo empaquetado y en los respositorios oficiales de cada distro? En Fedora, por ejemplo, ya tengo Python 3, Gtk+ 3 y PyGobject instalados por default. Si quiero Glade, es sólo “yum install glade”. Fácil, no? 🙂

    • Porque como dice Germán, para las distribuciones GNU/Linux ya se encuentran empaquetados y es muy fácil instalarlos; por ejemplo para instalar glade en Debian es muy sencillo:
      aptitude install glade

  1. ¿Si quiero usar Python 2.7 los pasos serían los mismos?
    Obviamente, instalando el Python 2.7 de 32 bits (por más que use el SO en 64 bits) y en vez de la carpeta py33 iría la 2.7. ¿Funcionaría?
    Gracias.

      • Gracias, ya probé y por ahora me funciona el “Hola, mundo”.

        Veo si consigo algún buen tutorial del pyGTK3 o como se llame y cualquier problema, aviso.

          • Probando el GTK3 con Python 2.7 en Windows y siguiendo el tutorial. Hasta ahora todos los programas me funcionan, excepto el del Capítulo 14 (IconView -> https://python-gtk-3-tutorial.readthedocs.org/en/latest/iconview.html)

            Me da el siguiente error:
            Traceback (most recent call last):
            File “C:\Users\Usuario\Desktop\prueba.py”, line 24, in
            win = IconViewWindow()
            File “C:\Users\Usuario\Desktop\prueba.py”, line 19, in __init__
            pixbuf = Gtk.IconTheme.get_default().load_icon(icon, 64, 0)
            File “C:\Python27\lib\site-packages\gi\types.py”, line 47, in function
            return info.invoke(*args, **kwargs)
            GError: Icon ‘gtk-cut’ not present in theme

            Lo intenté con otros iconos y tampoco funciona. ¿Me falta instalar algún tema? Gracias desde ya.

          • Tampoco me anda el ejemplo 19. Drag and Drop.

            La función que llama en ambos casos y que es en donde me da error es:

            pixbuf = Gtk.IconTheme.get_default().load_icon(icon_name, 16, 0)

            No me encuentra el icono, pero en otros ejemplos sí los puede usar. Sólo me da error cuando lo quiero usar con esa función (acá icon_name puede reemplazarse con algún valor como por ejemplo Gtk.STOCK_CUT o cualquiera y da exactamente el mismo error).

          • Sigo hablando solo. Lo que me funciona en otros ejemplos es que las imágenes se me cargan en los botones. No puedo cargar los iconos con la función que viene en los dos ejemplos que di antes.

          • Creo que el error es claro:
            GError: Icon ‘gtk-cut’ not present in theme

            Según parece ese icono no está disponible, usa otro icono. Probablemente el mantenedor del paquete no incluyó los iconos del tema o no se puede encontrar en la ruta por defecto, usa una distribución de GNU/Linux y mira si sigue apareciendo el mismo error.

            Con respecto a la pregunta 19, parece estar relacionado con la versión de PyGobject, en la parte superior de la documentación dice:

            Note
            Versions of PyGObject = 3.0.3 is required for the following examples to work.

            La versión que tú tienes es la 3.0, prueba en una distribución de GNU/Linux; y pues tenemos que esperar que actualicen el paquete (para Windows) o en todo caso lo puedes compilar por ti mismo.

            Saludos y sigue adelante.

          • En Ubuntu me funcionan perfecto todos los ejemplos del tutorial. En Windows, sigue sin funcionar. Voy a tener que esperar. Otro que no anda es el ejemplo del Spinner, que no hace la animación. Saludos y gracias.

  2. He seguido el tutorial de instalacion e instalado todo paso a paso.
    Y ejecutando el siguiente codido:
    from gi.repository import Gtk

    class FiestraPrincipal:
    def __init__(self):
    filename = “/datos/dam/exemplosPython/formularioSaudo”
    constructor = Gtk.builder()
    constructor.add_from_file(filename)
    #diccionario donde relacionamos sinais con eventos
    sinais={
    “clickedAceptar”: self.clic_boton,
    “activateCadroTexto”: self.clic_boton,
    “destroyFiestra”: Gtk.main_quit

    }
    constructor.connect_signals(sinais)
    #Obtenemos una referencia do descriptor XML para poder acceder
    self.etiqueta = self.widgets_widget(“Etiqueta”)
    self.cadroTexto = self.widgets_widget(“CadroTexto”)

    def clic_boton(self,widget):
    texto=self.cadroTexto.get_text()
    self.etiqueta.set_text(“ola %s” % texto)

    if __name__ ==”__main__”:
    FiestraPrincipal()
    Gtk.Main()

    Me sale esta respuesta:
    Traceback (most recent call last):
    File “C:/Users/admin/Google Drive/prueba/FormularioSaudo.py”, line 3, in
    from gi.repository import Gtk
    File “C:\Python33\lib\site-packages\gi\__init__.py”, line 27, in
    from ._gi import _API, Repository
    ImportError: DLL load failed: %1 no es una aplicación Win32 válida.

    Alguien sabe a que se debe el problema, o cual puede ser su posible solucion.
    Muchas gracias.

  3. Es curioso en un windows 7 32 bits a la primera.
    En un WIndows 7 64 bits, no puedo hacerlo correr, siempre me sale ;
    >>> from gi.repository import Gtk
    Traceback (most recent call last):
    File “”, line 1, in
    File “C:\Python33\lib\site-packages\gi\__init__.py”, line 27, in
    from ._gi import _API
    ImportError: DLL load failed: No se encontró el proceso especificado.

    Lo he intentado de todas formas posibles, ya perdí la ilusión de instalarlo.

    • Verás las librerías para 64 bits tienen aún algunos bug, por favor instala la versión de 32bits tanto de python y GTK+ para que no tengas problemas.

      Nunca debes perder la ilusión 🙂

  4. Buenas estoy trabajando con python + gtk3 , es muy bueno ahora estoy en un pequeño problema quiero cambiarle el icono a mi formulario(window) en este caso y lo logro cambiarlo, desde ya gracias, Saludos

Dejar una respuesta