Python y GTK3

gtkPython

Seguro que más de uno se ha dado cuenta de que con la llegada de GTK3 no han aparecido los habituales python-gtk3 y compañía. Esto se debe a que ahora se utiliza un sistema de introspección de objetos que proporciona GObject (para que luego digan que no se puede hacer OO en C). Con este sistema se pueden crear «bindings al vuelo» de cualquier librería hecha con GObject con el consiguiente ahorro que implica no tener que hacer y mantener bindings. El sistema de introspección si que necesita bindings claro (PyGI), pero están integrados en python-gobject.

Y cómo se hace ahora?

Pues realmente no cambia demasiado (un ejemplo sacado de live.gnome.org::How does PyGI work?)

from gi.repository import Gtk; 
Gtk.MessageDialog(None, 0, Gtk.MessageType.INFO, Gtk.ButtonsType.CLOSE, "Hello World").run()

Y todo lo demás?

Pensaba hacer una receta con algo más de detalle pero he encontrado toda una serie de ellas que están muy bien. Las enlazo aquí, aunque puede ser buena idea copiarlas, que luego la gente cierra sus blogs y nos quedamos con el enlace apuntando al mar (habrá que mirar la licencia):

Aprendiendo GtkBuilder, Glade y Python:

Comentarios

Opciones de visualización de comentarios

Seleccione la forma que prefiera para mostrar los comentarios y haga clic en «Guardar las opciones» para activar los cambios.
Imagen de shakaran

Retrocompatibilidad

El problema de GTK3 y Instrospection a mi gusto creo que no es la complicación de cambiar unas pocas de líneas en tu código para hacerlo compatible. Sino que tengas usuarios de GTK2 y GTK3 por mantener y que tengas que adaptar todo el código para que funcione en ambas versiones (si quieres dar buen soporte hacia atrás).

Si veo de gran utilidad, que los binding se "autogeneren" y no implique más trabajo a la comunidad. Porque últimamente y al menos para PyGTK, había una carencia importante en el ritmo de actualizaciones (sobretodo, que a veces no eran liberadas para todas las plataformas, pasando un año incluso entre liberaciones).

Today is a good day. Would you be tomorrow?

Imagen de david.villa

Me refería a que no había

Me refería a que no había mucha diferencia en la forma de usarlo. El problema de la compatibilidad hacia atrás de GTK3 (sobre lo que corrieron ríos de pixels en su momento) lo tendríamos aunque hubiera bindings "normales" sin introspección. Yo creo que lo lógico es hacer los nuevos programas con las nuevas versiones (de librerías y de lenguajes) y en los existentes aguantar o migrar, pero mantener las dos versiones es una locura. En todo caso tienes razón, romper la compatibilidad trae problemas, espero que compense.

No soy portavoz de ningún colectivo, grupo o facción. Mi opinión es personal e intransferible.