Creeu més aplicacions GUI avançades utilitzant l'eina PyGobject a Linux - Part 2


Continuem amb la nostra sèrie sobre la creació d'aplicacions GUI a l'escriptori Linux mitjançant PyGObject. Aquesta és la segona part de la sèrie i avui parlarem de la creació d'aplicacions més funcionals amb alguns ginys avançats.

  1. Creeu aplicacions GUI a Linux amb PyGObject - Part 1

A l'article anterior dèiem que hi ha dues maneres de crear aplicacions GUI utilitzant PyGObject: la manera només codi i la manera de disseny de Glade , però a partir d'ara, només explicarem la manera del dissenyador de Glade, ja que és molt més fàcil per a la majoria d'usuaris, podeu aprendre la manera només de codi mitjançant python-gtk3-tutorial.

Creació d'aplicacions GUI avançades a Linux

1. Comencem a programar! Obriu el vostre dissenyador Glade des del menú d'aplicacions.

2. Feu clic al botó \Finestra de la barra lateral esquerra per crear-ne una de nova.

3. Feu clic al giny \Caixa i deixeu-lo anar a la finestra buida.

4. Se us demanarà que introduïu el nombre de caselles que voleu, feu que sigui 3.

I veureu que les caixes estan creades, aquestes caixes són importants per a nosaltres per poder afegir més que 1 giny en una finestra.

5. Ara feu clic al widget quadre i canvieu el tipus d'orientació de vertical a horitzontal.

6. Per crear un programa senzill, afegiu una \Entrada de text, \Text del quadre combinat i un \Botó ” per a cadascuna de les caixes, hauríeu de tenir alguna cosa així.

7. Ara feu clic al giny \finestra1 de la barra lateral dreta i canvieu-ne la posició a \Centre.

Desplaceu-vos cap avall fins a la secció \Aparença. I afegiu un títol a la finestra El meu programa.

8. També podeu triar una icona per a la finestra fent clic al quadre \Nom de la icona.

9. També podeu canviar l'alçada i l'amplada per defecte de l'aplicació. Després de tot això, hauríeu de tenir alguna cosa com això.

En qualsevol programa, una de les coses més importants és crear una finestra \Sobre, per fer-ho, primer haurem de canviar el botó normal que hem creat abans en un botó d'existències, mira a la imatge.

10. Ara, haurem de modificar alguns senyals per tal d'executar accions específiques quan es produeixi algun esdeveniment als nostres ginys. Feu clic al giny entrada de text, canvieu a la pestanya \Señals a la barra lateral dreta, cerqueu \activat i canvieu-ne. manejador a \enter_button_clicked, el senyal \activat és el senyal predeterminat que s'envia quan es prem la tecla \Enter tot centrant-se en el giny d'entrada de text.

Haurem d'afegir un altre controlador per al senyal \clic per al nostre giny del botó sobre, fer-hi clic i canviar el senyal \clic a \< b>es_clica_botó“.

11. Aneu a la pestanya \Comú i marqueu \Té focus tal com es mostra a continuació (per donar el focus predeterminat al botó sobre en comptes de l'entrada) .

12. Ara des de la barra lateral esquerra, creeu una nova finestra \Quant al diàleg.

I notareu que s'ha creat la finestra \Quant al diàleg.

Modifiquem-lo... Assegureu-vos d'inserir-hi els paràmetres següents des de la barra lateral dreta.

Després de fer la configuració anterior, obtindreu el següent sobre Window.

A la finestra anterior, notareu l'espai buit, però podeu eliminar-lo reduint el nombre de caselles de 3 a 2 o podeu afegir-hi qualsevol giny si voleu.

13. Ara deseu el fitxer a la vostra carpeta d'inici amb el nom \ui.glade i obriu un editor de text i introduïu-hi el codi següent.

#!/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

Deseu el fitxer al vostre directori d'inici amb aquest nom \myprogram.py, i doneu-li permís d'execució i executeu-lo.

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

Introduïu un text al quadre d'entrada, premeu la tecla \Enter del teclat i notareu que la frase s'imprimeix a l'intèrpret d'ordres.

Això és tot per ara, no és una aplicació completa, però només volia mostrar-vos com enllaçar coses amb PyGObject, podeu veure tots els mètodes per a tots els ginys GTK a gtkobjects.

Només heu d'aprendre els mètodes, crear els ginys amb Glade i connectar els senyals amb el fitxer Python, això és tot! No és gens difícil amic meu.

Explicarem més coses noves sobre PyGObject a les properes parts de la sèrie, fins aleshores estigueu actualitzats i no oblideu fer-nos els vostres comentaris sobre l'article.