ProgramacionGTKenPython/CapituloI
Bienvenidos al primer capitulo de Programacion GTK+ en Python.
Contenido |
Programando en GTK+
Si alguna vez vieron Programacion GTK en C, Capitulo I, se habran dado cuenta que programar, compilar y ejecutar la aplicacion son tres pasos por separado. A diferencia de lo anterior, programar en Python para GTK+ es mucho mas sencillo en un aspecto fundamental:
- No es necesario compilar ni enlazar una aplicacion para ejecutarla
Usando C, lo tipico es compilar la aplicacion y enlazarla:
user@maquina:$ gcc -c programa.c `pkg-config --cflags gtk+-2.0 ` user@maquina:$ gcc -o programa programa.o `pkg-config --libs gtk+-2.0 `
Python da la ventaja de que no es necesario enlazar:
user@maquina:$ python aplicacion.py
Y listo.
Dependencias Basicas
La mayoria de las distribuciones que empaquetan GNOME para distribucion lo hacen junto con las dependencias basicas para ejecutar aplicaciones escritas en Python. Pero es mejor cerciorarse de lo anterior.
Es hora de usar la shell de Python:
user@maquina:$ python Python 2.5.2 (r252:60911, May 7 2008, 15:19:09) [GCC 4.2.3 (Ubuntu 4.2.3-2ubuntu7)] on linux2 Type "help", "copyright", "credits" or "license" for more information. >>>
Para comprobar si la extension de GTK para Python esta instalada, solo ejecuten en la shell de Python:
>>> import gtk
No deberia dar error. En caso contrario:
>>> import gtk Traceback (most recent call last): File "<stdin>", line 1, in <module> ImportError: No module named gtk
Si ocurre eso, echen mano del manejo que tengan de su distribucion. Por lo general, las distribuciones basadas en Debian necesitan el paquete python-gtk2 (y sus dependencias).
Un primer programa en GTK+
Ahora veamos un ejemplo muy simple, un tipico "Hola Mundo".
import gtk ventana = gtk.Window(gtk.WINDOW_TOPLEVEL) ventana.set_title("Hola Mundo!") ventana.show() gtk.main()
Destripemos este ejemplo linea por linea.
Hola Mundo, version 0.1
import gtk
Permite usar GTK+ desde dentro de Python.
ventana = gtk.Window(gtk.WINDOW_TOPLEVEL)
Quiero detenerme un poco antes de seguir con lo siguiente. Y usar algunos "malos" ejemplos de otros lenguajes de programacion.
En C, lo tipico es definir la variable previamente y asignarle el tipo de dato:
#include <gtk.h> GtkWidget * control; control = gtk_window_new(GTK_WINDOW_TOPLEVEL);
Y usando la sintaxis de C++ (pseudocodigo):
#include <gtkmm.h> GtkWidget * control; control = Gtk_Window->new(GTK_WINDOW_TOPLEVEL);
La definicion de las variables en Python es mucho mas flexible que en otros lenguajes. Por otra parte, cada objeto importado en Python puede llamar a sus metodos (funciones), similar a la sintaxis de C++. En este caso, se importa el "objeto" (entre comillas) gtk y se usa el metodo Window(). A estas alturas, cuidarse del tipico "casting" de C ya no es un problema, lo que le da a Python bastantes puntos en la programacion en GTK+.
Despues de la "casi" facil explicacion, sigamos.
ventana.set_title("Hola Mundo!")
Solo llama al metodo set_title para cambiar el titulo de la ventana.
ventana.show()
Esta funcion indica a GTK+ que debe mostrar la ventana.
Y la magia termina cuando se llama al loop principal de GTK+:
gtk.Main()
Solo grabar esas lineas de texto en un archivo .py y ejecutar:
usuario@maquina:$ python holamundo.py
Para ejecutar.
Controles
El primer control que aparecio en el ejemplo anterior fue el control GTK_WINDOW (ventana):
ventana = gtk.Window(gtk.WINDOW_TOPLEVEL)
Cada control esta definido para ser llamado como un control del objeto gtk:
ventana = gtk.Window(gtk.WINDOW_TOPLEVEL) boton = gtk.Button("Boton") etiqueta = gtk.Label("Etiqueta")
Cada variable que tenga un control es llamado de la siguiente forma:
variable = gtk.Control(argumentos)
Luego, el control podra llamar a sus metodos :
variable.metodo(argumento1,argumento2,...)
Control Ventana
Es el mas basico para empaquetar controles.
ventana = gtk.Window(gtk.WINDOW_TOP_LEVEL)
El argumento de gtk.Window es el tipo de ventana a usar. Al igual que en C, es
- WINDOW_TOP_LEVEL : generalmente usado, es para crear una ventana nueva que informe al Window Manager
- WINDOW_POPUP : en caso de querer usar un pop-up, no manejado por el Window Manager
Control Etiqueta
El control de etiqueta se llama de la siguiente manera:
etiqueta = gtk.Label("titulo de la etiqueta")
Control Boton
Al igual que el ejemplo anterior:
boton = gtk.Button("titulo del boton")