Hola mundo (Python) Susanna Huhtanen ihmis.suski@gmail.com 2012 Tiffany Antopolski tiffany.antopolski@gmail.com Una aplicación «Hola mundo» básica Daniel Mustieles daniel.mustieles@gmail.com 2011 - 2017 Nicolás Satragno nsatragno@gmail.com 2012 - 2013 Jorge González jorgegonz@svn.gnome.org 2011 Cómo construir, instalar y crear un <file>tar.xz</file> de un programa Hola mundo

Este tutorial le demostrará cómo:

crear una pequeña aplicación «Hola, mundo» usando Python y GTK+

hacer el archivo .desktop

configurar el sistema de construcción

Crear el programa
Bibliotecas que importar from gi.repository import Gtk import sys

Para que su script funcione con GNOME, se deben importar las bibliotecas de GNOME mediante introspección de GObject. En este caso, se están importando las vinculaciones de lenguaje y GTK+, la biblioteca que contiene los widgets gráficos usados para crear aplicaciones de GNOME.

Crear la ventana principal de la aplicación class MyWindow(Gtk.ApplicationWindow): # constructor for a Gtk.ApplicationWindow def __init__(self, app): Gtk.Window.__init__(self, title="Hello World!", application=app) self.set_default_size(200, 100) class MyApplication(Gtk.Application): def __init__(self): Gtk.Application.__init__(self) def do_activate(self): win = MyWindow(self) win.show_all() def do_startup(self): Gtk.Application.do_startup(self)

«Gtk.Application» inicializa GTK+. También conecta el botón x, que se genera automáticamente junto con la ventana, a la señal «destroy».

Se puede empezar a construir la primera ventana. Esto se hace creando una clase llamada MyWindow y asignándole una «Gtk.ApplicationWindow».

Se le asignara una propiedad llamada title. El título puede ser la cadena que quiera pero, para estar seguro, es conveniente que tenga una codificación UTF-8.

Ya tiene una ventana que contiene un título y un botón «cerrar» que funciona. Ahora, añada el texto «Hola mundo».

Etiqueta para la ventana # Add a label widget to your window # create a label label = Gtk.Label() # set the text of the label label.set_text("Hello GNOME!") # add the label to the window self.add(label)

Una etiqueta de texto es uno de los widgets de GTK+ que puede usar si importó la biblioteca GTK+. Para usarlo, cree una variable nueva llamada label y establezca el texto que la etiqueta contendrá. Finalmente, se crea y ejecuta la aplicación:

#run the application app = MyApplication() exit_status = app.run(sys.argv) sys.exit(exit_status)

«Gtk.ApplicationWindow» sólo puede contener un widget a la vez. Para construir programas más elaborados necesita crear un widget contenedor como «Gtk.Grid» dentro de la ventana, y después añadirle los otros.

hola-mundo.py

El archivo completo:

from gi.repository import Gtk import sys class MyWindow(Gtk.ApplicationWindow): # constructor for a Gtk.ApplicationWindow def __init__(self, app): Gtk.Window.__init__(self, title="Welcome to GNOME", application=app) self.set_default_size(200, 100) # create a label label = Gtk.Label() # set the text of the label label.set_text("Hello GNOME!") # add the label to the window self.add(label) class MyApplication(Gtk.Application): def __init__(self): Gtk.Application.__init__(self) def do_activate(self): win = MyWindow(self) win.show_all() def do_startup(self): Gtk.Application.do_startup(self) app = MyApplication() exit_status = app.run(sys.argv) sys.exit(exit_status)
Ejecutar la aplicación desde la terminal

Para ejecutar esta aplicación, primero guárdela como hello-world.py. Luego, vaya a la carpeta donde está la aplicación.

$ python hola-mundo.py
El archivo <file>.desktop.in</file>

Ejecutar aplicaciones desde la terminal es útil al principio del proceso de crear la aplicación. Para tener una integración con la aplicación completa en GNOME 3, se necesita un lanzador en el escritorio. Para esto, necesita crear un archivo .desktop. El archivo «.desktop» describe el nombre de la aplicación, el icono que usa y varios campos de integración. Puede encontrar una descripción de los archivos .desktop aquí. El archivo .desktop.in creará el .desktop.

El ejemplo muestra los requerimientos mínimos de un archivo .desktop.in.

[Desktop Entry] Version=1.0 Encoding=UTF-8 Name=Hello World Comment=Say Hello Exec=@prefix@/bin/hello-world Icon=application-default-icon Terminal=false Type=Application StartupNotify=true Categories=GNOME;GTK;Utility;

Ahora se verán algunas partes del archivo .desktop.in.

Name

El nombre de la aplicación.

Comment

Una descripción corta de la aplicación.

Exec

Especifica un comando que ejecutar cuando se elige la aplicación en el menú. En este ejemplo, «exec» sólo indica dónde encontrar el archivo hello-world y el archivo se hace cargo del resto.

Terminal

Especifica si el comando del campo «Exec» se ejecuta en una ventana de la terminal.

Para incluir su aplicación en la categoría correcta, debe añadir las categorías necesarias a la línea «Categories». Puede encontrar más información sobre las distintas categorías en la especificación del menú.

En este ejemplo se ha usado un icono existente. Para usar un icono personalizado, necesita un archivo «.svg» con su icono guardado en /usr/share/icons/hicolor/scalable/apps. Escriba el nombre del archivo del icono en el archivo «.desktop.in», en la línea 7. Puede obtener más información sobre los iconos en Instalar iconos para temas, Instalar iconos para temas y en freedesktop.org: especificaciones/icon-theme-spec.

El sistema de construcción

Para que su aplicación forme parte realmente del sistema GNOME 3 debe instalarla con la ayuda de autotools. La construcción autotools instalará todos los archivos necesarios en las ubicaciones correctas.

Para esto deberá tener los siguientes archivos:

autogen.sh #!/bin/sh set -e test -n "$srcdir" || srcdir=`dirname "$0"` test -n "$srcdir" || srcdir=. olddir=`pwd` cd "$srcdir" # This will run autoconf, automake, etc. for us autoreconf --force --install cd "$olddir" if test -z "$NOCONFIGURE"; then "$srcdir"/configure "$@" fi

Una vez que el archivo autogen.sh esté listo y guardado, ejecute:

$ chmod +x autogen.sh
Makefile.am # The actual runnable program is set to the SCRIPTS primitive. # # Prefix bin_ tells where to copy this bin_SCRIPTS = hello-world.py # # List of files to be distributed EXTRA_DIST= \ $(bin_SCRIPTS) # # # The desktop files desktopdir = $(datadir)/applications desktop_DATA = \ hello-world.desktop
configure.ac # This file is processed by autoconf to create a configure script AC_INIT([Hello World], 1.0) AM_INIT_AUTOMAKE([1.10 no-define foreign dist-xz no-dist-gzip]) AC_CONFIG_FILES([Makefile hello-world.desktop]) AC_OUTPUT
README

Información que los usuarios deben leer primero. Este archivo puede estar vacío.

Cuando tenga los archivos hello-world, hello-world.desktop.in, Makefile.am, configure.ac y autogen.sh con la información y los permisos correctos, el archivo README puede incluir las siguientes instrucciones:

Para construir e instalar este programa: ./autogen.sh --prefix=/home/usuario/.local make install ------------- Al ejecutar la primera línea se crean los siguientes archivos: aclocal.m4 autom4te.cache config.log config.status configure helloWorld.desktop install-sh missing Makefile.in Makefile Al ejecutar «make install», se instala la aplicación en /home/usuario/.local/bin y se instala el archivo helloWorld.desktop en /home/usuario/.local/share/applications Ahora puede ejecutar la aplicación escribiendo «Hello World» en la vista general. ---------------- Para desinstalarla, escriba: make uninstall ---------------- Para crear un archivador tar escriba: make distcheck Esto creará el archivo hello-world-1.0.tar.xz