Cree aplicaciones GUI más avanzadas con la herramienta PyGobject en Linux - Parte 2


Continuamos nuestra serie sobre la creación de aplicaciones GUI en el escritorio de Linux usando PyGObject . Esta es la segunda parte de la serie y hoy hablaremos sobre la creación de aplicaciones más funcionales usando algunos widgets avanzados.

  1. Create GUI Applications Under Linux Using PyGObject – Part 1

En el artículo anterior dijimos que hay dos formas de crear aplicaciones GUI usando PyGObject : la forma de solo código y la forma de diseñador Glade , pero de ahora en adelante, solo explicaremos la forma de diseñador de Glade , ya que es mucho más fácil para la mayoría de los usuarios, puede aprender la forma de solo código usando python-gtk3-tutorial.

Creación de aplicaciones GUI avanzadas en Linux

1. ¡Comencemos a programar! Abra su diseñador Glade desde el menú de aplicaciones.

2. Haga clic en el botón " Ventana " en la barra lateral izquierda para crear una nueva.

3. Haga clic en el widget " Cuadro " y suéltelo en la ventana vacía.

4. Se le pedirá que ingrese el número de casillas que desea, hágalo 3 .

Y verá que se crean las cajas , esas cajas son importantes para nosotros para poder agregar más que solo 1 widget en una ventana.

5. Ahora haga clic en el widget cuadro y cambie el tipo de orientación de vertical a horizontal .

6. Para crear un programa simple, agregue los widgets " Entrada de texto ", " Texto del cuadro combinado " y " Botón " para cada una de las cajas, debería tener algo como esto.

7. Ahora haga clic en el widget " ventana1 " de la barra lateral derecha y cambie su posición a " Centro ".

Desplácese hacia abajo hasta la sección " Apariencia ". Y agregue un título para la ventana " Mi programa ".

8. También puede elegir un icono para la ventana haciendo clic en el cuadro " Nombre del icono ".

9. También puede cambiar la altura y anchura predeterminada para la aplicación. Después de todo eso, debería tener algo como esto.

En cualquier programa, una de las cosas más importantes es crear una ventana “ Acerca de ”, para hacer esto, primero tendremos que cambiar el botón normal que creamos antes por un botón de stock, mira la imagen.

10. Ahora, tendremos que modificar algunas señales para ejecutar acciones específicas cuando ocurra algún evento en nuestros widgets. Haga clic en el widget entrada de texto , cambie a la pestaña " Señales " en la barra lateral derecha, busque " activado " y cambie su controlador a " enter_button_clicked ", la señal " activada " es la señal predeterminada que se envía cuando se presiona la tecla " Enter" mientras se enfoca en el texto widget de entrada.

Tendremos que agregar otro controlador para la señal " clickeado " para nuestro widget de botón Acerca de, haga clic en él y cambie la señal " clickeado " a " button_is_clicked “.

11. Vaya a la pestaña " Común " y marque " Tiene foco " como se indica a continuación (para dar el foco predeterminado para el botón Acerca de en lugar de la entrada).

12. Ahora, desde la barra lateral izquierda, cree una nueva ventana " Acerca del diálogo ".

Y notará que se crea la ventana " Acerca del diálogo ".

Modifiquémoslo ... Asegúrese de insertar la siguiente configuración desde la barra lateral derecha.

Después de realizar los ajustes anteriores, obtendrá lo siguiente sobre Window.

En la ventana anterior, notará el espacio vacío, pero puede eliminarlo disminuyendo el número de casillas de 3 a 2 o puede agregarle cualquier widget si lo desea.

13. Ahora guarde el archivo en su carpeta de inicio con el nombre “ ui.glade ” y abra un editor de texto e ingrese el siguiente código dentro de él.

#!/usr/bin/python
# -*- coding: utf-8 -*-

from gi.repository import Gtk
class Handler:

    def button_is_clicked(self, button):
        ## The ".run()" method is used to launch the about window.
         ouraboutwindow.run()
        ## This is just a workaround to enable closing the about window.
         ouraboutwindow.hide()

    def enter_button_clicked(self, button):
        ## The ".get_text()" method is used to grab the text from the entry box. The "get_active_text()" method is used to get the selected item from the Combo Box Text widget, here, we merged both texts together".
         print ourentry.get_text() + ourcomboboxtext.get_active_text()

## Nothing new here.. We just imported the 'ui.glade' file.
builder = Gtk.Builder()
builder.add_from_file("ui.glade")
builder.connect_signals(Handler())

ournewbutton = builder.get_object("button1")

window = builder.get_object("window1")

## Here we imported the Combo Box widget in order to add some change on it.
ourcomboboxtext = builder.get_object("comboboxtext1")

## Here we defined a list called 'default_text' which will contain all the possible items in the Combo Box Text widget.
default_text = [" World ", " Earth ", " All "]

## This is a for loop that adds every single item of the 'default_text' list to the Combo Box Text widget using the '.append_text()' method.
for x in default_text:
  ourcomboboxtext.append_text(x)

## The '.set.active(n)' method is used to set the default item in the Combo Box Text widget, while n = the index of that item.
ourcomboboxtext.set_active(0)
ourentry = builder.get_object("entry1")

## This line doesn't need an explanation :D
ourentry.set_max_length(15)

## Nor this do.
ourentry.set_placeholder_text("Enter A Text Here..")

## We just imported the about window here to the 'ouraboutwindow' global variable.
ouraboutwindow = builder.get_object("aboutdialog1")

## Give that developer a cookie !
window.connect("delete-event", Gtk.main_quit)
window.show_all()
Gtk.main

Guarde el archivo en su directorio personal con ese nombre " myprogram.py ", déle permiso de ejecución y ejecútelo.

$ chmod 755 myprogram.py
$ ./myprogram.py
This is what you will get, after running above script.

Ingrese un texto en el cuadro de entrada, presione la tecla “ Enter ” en el teclado, y notará que la oración está impresa en el caparazón.

Eso es todo por ahora, no es una aplicación completa, pero solo quería mostrarte cómo vincular cosas usando PyGObject , puedes ver todos los métodos para todos los widgets GTK en gtkobjects.

Simplemente aprenda los métodos, cree los widgets usando Glade y conecte las señales usando el archivo Python. ¡Eso es todo! No es nada difícil mi amigo.

Explicaremos más cosas nuevas sobre PyGObject en las próximas partes de la serie, hasta entonces mantente actualizado y no olvides darnos tus comentarios sobre el artículo.