2. Empezando
2.1. Ejemplo simple(simple Example)
Para comenzar con nuestro tutorial crearemos el programa más simple posible. Este programa creará una ventana de 200 x 200 píxeles.
import gi
gi.require_version('Gtk', '3.0')
from gi.repository import Gtk
win = Gtk.Window()
win.connect("delete-event", Gtk.main_quit)
win.show_all()
Gtk.main()
Ahora explicaremos cada línea del ejemplo.
import gi
gi.require_version('Gtk', '3.0')
from gi.repository import Gtk
Al principio, tenemos que importar el módulo Gtk para poder acceder a las clases y funciones de GTK+. Dado que el sistema de un usuario puede tener varias versiones de GTK+ instaladas al mismo nivel, queremos asegurarnos de que cuando importamos Gtk se refiera a GTK+3 y no a ninguna otra versión de la biblioteca, que es el propósito de la sentencia.
gi.require_version('Gtk', '3.0')
La línea siguiente crea una ventana vacía.
win = Gtk.Window()
Seguido por la conexión a la ventana de, "delete-event", para asegurarse de que la aplicación se termina si hacemos click en la X para cerrar la ventana.
win.connect("delete-event", Gtk.main_quit)
En siguiente paso se muestra la ventana.
win.show_all()
Finalmente,se inicia el bucle de procesamiento GTK+, que se detiene cuando se cierra la ventana.
Gtk.main()
Para ejecutar el programa,abra un terminal,cambie al directorio del archivo e ingrese:
python simple_example.py
2.2. Ejemplo extendido(Extended Example)
Para algo un poco más útil aquí está la versión PyGObject del clásico programa "Hello World",(Hola Mundo).
import gi
gi.require_version('Gtk', '3.0')
from gi.repository import Gtk
class MyWindow(Gtk.Window):
def __init__(self):
Gtk.Window.__init__(self, title="Hello World")
self.button = Gtk.Button(label="Click Here")
self.button.connect("clicked", self.on_button_clicked)
self.add(self.button)
def on_button_clicked(self, widget):
print("Hello World")
win = MyWindow()
win.connect("delete-event", Gtk.main_quit)
win.show_all()
Gtk.main()
Este ejemplo difiere del ejemplo simple(simple example), como subclase Gtk.Window
, para definir nuestra propia clase MyWindow
.
class MyWindow(Gtk.Window):
En el constructor de la clase tenemos que llamar al constructor de la superclase.Ademas, le decimos que defina el valor del titulo de la propiedad como Hello World.
Gtk.Window.__init__(self, title="Hello World")
Las siguientes tres líneas son para propiedades del boton que crearemos, la primera se utilizan para crear un widget de boton con un texto(label) que dice "Click Here",la segunda es para conectarse a su señal de click y la tercera es para agregarlo ala ventana de nivel superior.
self.button = Gtk.Button(label="Click Here")
self.button.connect("clicked", self.on_button_clicked)
self.add(self.button)
En consecuencia el metodo on_button_clicked()
sera llamado si hace click en el boton.
def on_button_clicked(self, widget):
print("Hello World")
El último bloque, fuera de la clase, es muy similar al ejemplo anterior, pero en lugar de crear una instancia de la clase Gtk.Window
genérica, creamos una instancia de MyWindow
.