En general, una interfaz es el medio de contacto que un usuario
establece con una máquina: una serie de botones, una línea de comandos,
o, un entrono gráfico presente en una ventana cuyos elementos son
gráficos (botones, etiquetas, imágenes...). A este último se le denomina GUI (graphical user interface)
¿Qué es GTK?
GTK+ (Gimp Toolkit) son una serie de bibliotecas gráficas inicialmente pensadas para la creación de interfaces gráficas de usuario. Dibujan en una ventana un conjunto de widgets (botones, etiquetas,
etc.) GTK+ se puede usar en cualquier plataforma; aunque inicialmente
se pensó para entornos de escritorio como GNOME (Ubuntu) puede usarse
bajo Windows y bajo MAC OS.
Desarrollando software en C u otros lenguajes como Python puede usarse estas bibliotecas. Con GTK+ se
pueden desarrollar software bajo varias licencias, libres y
propietarias. Cuando llamamos desde un programa a la biblioteca de otra
aplicación externa decimos que estamos utilizando una API de esa aplicación. Usaremos pues las APIs de GTK+
Abriendo una ventana (window)
En esta aplicación llamamos a dos APIs de GTK+. La primera es la clase Aplicación "GtkApplication" y la segunda es la clase Ventana "GtkWindow". Construyendo una interfaz gráfica significa crear una aplicación en una ventana.
En el siguiente ejemplo, abriré una ventana en el S.O. Activo una clase llamada miaplicacion a la cual pertenecerá una ventana.
En el siguiente ejemplo, abriré una ventana en el S.O. Activo una clase llamada miaplicacion a la cual pertenecerá una ventana.
# -*- coding: utf-8 -*- from gi.repository import Gtk import sys class miaplicacion(Gtk.Application): def do_activate(self): # Crear una ventana GTK que pertenece a la misma aplicación ventana = Gtk.Window(application=self) # Pongo un título ventana.set_title("¡Bienvenidos a GNOME!") # activo o muestro la ventana ventana.show_all() # crea una instancia de la clase miaplicacion app = miaplicacion() # ejecuto la misma pasando los argumentos sys.argv exit_status = app.run(sys.argv) # Sale de la aplicación leyendo el status de la misma. sys.exit(exit_status)Intenta introducir en la ventana las siguientes opciones
- set_default_size(m,n), siendo m y n en píxeles el tamaño de la ventana. Si m ó n = -1, se toma el tamaño predeterminado.
- set_position(Gtk.WindowPosition.CENTER)
- Los modificadores posibles son Gtk.WindowPosition.CENTER, Gtk.WindowPosition.NONE, Gtk.WindowPosition.MOUSE, Gtk.WindowPosition.CENTER_ALWAYS, Gtk.WindowPosition.CENTER_ON_PARENT
Abriendo una ventana con menús (applicationwindow)
La ventana de ApplicationWindow es la que puede soportar GMenu. Es decir, es una ventana a la que se puede incorporar una barra de menú. Se utiliza una subclase de GtkWindow llamada GtkApplicationWindow.
# -*- coding: utf-8 -*- from gi.repository import Gtk import sys # Una ApplicationWindow GTK class miventana(Gtk.ApplicationWindow): # Constructor de ApplicationWindow def __init__(self, app): Gtk.Window.__init__(self, title="Welcome to GNOME", application=app) # también puede venir aquí win.show_all() class miaplicacion(Gtk.Application): # Constructor de Gtk.Application def __init__(self): Gtk.Application.__init__(self) # al activarse la aplicación, crea un objeto miventana. # Paso la aplicación "self" como argumento. def do_activate(self): win = miventana(self) # Muestra la ventana win.show_all() # hacer un startup def do_startup(self): Gtk.Application.do_startup(self) # al igual que antes se crea y se ejecuta la aplicación app = miaplicacion() exit_status = app.run(sys.argv) sys.exit(exit_status)
Explicando el código:
- Se vuelve a crear una clase miaplicacion, llamando a la API Gtk.Application.
- Esta aplicación define dos métodos que se activan cuando recibe dos señales distintas (ver señales en Gtk.application).
- Cuando la aplicación se ejecuta se dispara la señal startup antes de dibujar la ventana. Se utiliza para generar código antes de tener la interfaz gráfica en sí.
- Después, y dependiendo de cómo sea la aplicación se disparan las señales open o activate.
- La clase miventana , llama a la API Gtk.Applicationwindow.
- Simplemente se construye llamando al constructor de la clase Gtk.Window.
- Por lo demás, es igual al código del apartado anterior.
No hay comentarios:
Publicar un comentario