Cómo crear una aplicación simple en Python y GTK3

Cómo crear una aplicación simple en Python y GTK3
Este artículo explicará cómo crear una aplicación gráfica "Hello World" en Linux usando el lenguaje de programación de Python 3 y el marco GUI GTK3. Todas las muestras de código en el tutorial se prueban con Python 3.8.6 y GTK 3.24.23 en Ubuntu 20.10.

Instale los paquetes necesarios

Para crear una aplicación que use Python 3 y GTK3, debe instalar enlaces de Python para bibliotecas de Gobjects. Esto se puede hacer instalando el paquete pygobject incluido en repositorios de casi todas las principales distribuciones de Linux. Para instalar estas dependencias en Ubuntu, puede usar el comando a continuación:

$ sudo apto install python3 python3-gi

También puede compilar pygobject del código fuente disponible aquí.

Código completo de la aplicación Hello World

La muestra de código completo de una aplicación Hello World escrita en Python 3 y GTK3 se puede encontrar a continuación. Esta aplicación envía un "Hello World !!"Notificación al escritorio al hacer clic en un botón.

importación gi
soldado americano.require_version ("gtk", "3.0 ")
soldado americano.require_version ('notificar', '0.7 ')
de GI.Repositorio importar gtk
de GI.Notificación de importación del repositorio
clase mywindow (gtk.Ventana):
def __init __ (self):
Gtk.Ventana.__en si mismo,)
Gtk.Ventana.set_default_size (self, 640, 480)
Notificar.init ("aplicación simple GTK3")
ser.caja = GTK.Caja (espaciado = 6)
ser.Agregar (yo mismo.caja)
ser.botón = GTK.Botón (etiqueta = "Haga clic aquí")
ser.botón.set_halign (GTK.Alinear.CENTRO)
ser.botón.set_valign (GTK.Alinear.CENTRO)
ser.botón.conectar ("Haga clic", Self.on_button_clicked)
ser.caja.Pack_start (yo.botón, verdadero, verdadero, 0)
def on_button_clicked (self, widget):
n = notificar.Notificación.Nuevo ("Aplicación GTK3 simple", "Hello World !!")
norte.espectáculo()
win = mywindow ()
ganar.conectar ("destruir", gtk.Main_quit)
ganar.mostrar todo()
Gtk.principal()

Captura de pantalla del resultado final.

Se hace clic en la notificación de escritorio que llega cuando se hace clic "Haga clic aquí":

Explicación paso a paso

Varias declaraciones de "importación" en las primeras líneas del código Importar módulos necesarios necesarios para que la aplicación funcione. Estos módulos exponen numerosas clases y funciones que se pueden usar dentro de la aplicación. "Soldado americano.Las declaraciones de requisito_version "aseguran que solo se importe la versión requerida de la biblioteca para evitar problemas de compatibilidad y bloquear. En este caso "3.0 ”se usa para asegurarse de que la biblioteca GTK3 se use en la aplicación y no GTK2 o cualquier otra versión de GTK.

Similar a la clase GTK, la clase Notify también se importa especificando su versión requerida (0.7 es esa última versión al momento de escribir este artículo). Esta clase se utilizará más adelante en la aplicación.

importación gi
soldado americano.require_version ("gtk", "3.0 ")
soldado americano.require_version ('notificar', '0.7 ')
de GI.Repositorio importar gtk
de GI.Notificación de importación del repositorio

La siguiente declaración subclase "GTK.Clase de ventana "como clase" mywindow ". El "gtk.Ventana.El método __init__ ”inicializa el constructor de la súper clase (GTK.Ventana) desde la cual se creó una subclase (mywindow). En el constructor, el título de la aplicación también se establece como "Hello World" utilizando el argumento de "título". La geometría predeterminada de la ventana de la aplicación también se establece especificando el ancho y la altura en el método "set_default_size".

clase mywindow (gtk.Ventana):
def __init __ (self):
Gtk.Ventana.__en si mismo,)
Gtk.Ventana.set_default_size (self, 640, 480)

A continuación, el método "init" de la clase Notify se utiliza para inicializar la biblioteca "libnotify" suministrando un título de aplicación. Sin inicialización, las notificaciones no se enviarán y se mostrarán en el escritorio de Linux.

Notificar.init ("aplicación simple GTK3")

La instrucción "Box" agrega un contenedor de diseño vacío a la ventana de aplicación principal. Este contenedor es como un lienzo vacío donde se pueden poner cualquier número de widgets. "Espacio" se refiere al espacio entre widgets en las unidades de "píxel".

ser.caja = GTK.Caja (espaciado = 6)
ser.Agregar (yo mismo.caja)

Se crea un nuevo widget de botón "Haga clic aquí" utilizando el "GTK.Botón "Método. Luego se alinea con los centros horizontales y verticales del diseño de la caja principal utilizando los métodos "set_halign" y "set_valign". El botón está conectado a la señal "haciendo clic" para que cada vez que se presione el botón, se pueda invocar el método de devolución de llamada "on_button_clicked". Por último, el widget del botón se inserta desde la izquierda a lo largo del eje horizontal hasta el diseño de la caja con la "caja.Método Pack_Start ". Este método toma cuatro argumentos: el objeto de widget a agregar, booleano para expandir el widget, booleano para llenar el widget y el relleno entre los widgets agregados y otros widgets adyacentes.

ser.botón = GTK.Botón (etiqueta = "Haga clic aquí")
ser.botón.set_halign (GTK.Alinear.CENTRO)
ser.botón.set_valign (GTK.Alinear.CENTRO)
ser.botón.conectar ("Haga clic", Self.on_button_clicked)
ser.caja.Pack_start (yo.botón, verdadero, verdadero, 0)

El método "on_button_click" se invoca cada vez que se presiona el botón "Haga clic aquí". Se crea una nueva notificación utilizando el método "nuevo" que toma el título de notificación y el contenido como argumentos. Esta notificación se muestra en el escritorio utilizando el método "show". También puede mover la instrucción "nueva" en el constructor principal para evitar recrear la notificación cada vez que se presiona el botón.

def on_button_clicked (self, widget):
n = notificar.Notificación.Nuevo ("Aplicación GTK3 simple", "Hello World !!")
norte.espectáculo()

Las siguientes afirmaciones se tratan de crear, administrar y mostrar una nueva ventana de aplicación. Se crea una nueva instancia de la clase "mywindow" y está conectada a la señal "destruir" para garantizar que la aplicación esté cerrada correctamente cada vez que un usuario decide dejar la aplicación haciendo clic en el botón "X". El método "show_all" muestra la ventana de la aplicación en su escritorio de Linux. Por último, el bucle de aplicación principal responsable de manejar eventos y señales se ejecuta.

Conclusión

GTK3 y QT son algunos de los marcos de GUI más populares utilizados para crear aplicaciones que se ejecutan de forma nativa en Linux. Ambos marcos le permiten escribir la lógica principal en los idiomas de C ++ y Python. No puede equivocarse eligiendo cualquiera de estos kits de herramientas para su próximo proyecto de aplicación de Linux.