Kako ustvariti aplikacije GUI na namizju Linux z uporabo PyGObject - 1. del


Ustvarjanje aplikacij v Linuxu je mogoče izvajati na različne načine, vendar je načinov to malo, zato bomo z najpreprostejšimi in najbolj funkcionalnimi programskimi jeziki in knjižnicami na hitro pogledali, kako ustvariti aplikacije pod Linuxom. namizje z uporabo knjižnice GTK + s programskim jezikom Python, ki se imenuje\"PyGObject".

PyGObject uporablja GObject Introspection za ustvarjanje vezave za programske jezike, kot je Python, PyGObject je naslednja generacija iz PyGTK, lahko rečete, da je PyGObject = Python + GTK3.

Danes bomo začeli serijo o ustvarjanju aplikacij GUI (grafični uporabniški vmesnik) pod namizjem Linux z uporabo knjižnice GTK + in jezika PyGobject , serija bo zajemala naslednje teme:

Najprej morate imeti nekaj osnovnega znanja v Pythonu; Python je zelo sodoben in enostaven za uporabo programski jezik. Je eden najbolj znanih programskih jezikov na svetu, z uporabo Pythona boste lahko ustvarili veliko odličnih aplikacij in orodij. Lahko obiščete nekaj brezplačnih tečajev, na primer na codeacademy.com, ali pa preberete nekaj knjig o Pythonu na:

GTK + je odprtokodna zbirka orodij za različne platforme za ustvarjanje grafičnih uporabniških vmesnikov za namizne aplikacije; prvič se je začela leta 1998 kot orodje GUI za GIMP, kasneje pa je bila uporabljena v številnih drugih aplikacijah in kmalu postala ena najbolj znanih knjižnic za ustvarjanje GUI-jev. GTK + je izdan pod licenco LGPL.

Ustvarjanje aplikacij GUI pod Linuxom

Obstajata dva načina za ustvarjanje aplikacij z uporabo GTK + in Python:

  1. Pisanje grafičnega vmesnika samo s kodo.
  2. Oblikovanje grafičnega vmesnika s programom\" Glade "; ki je orodje RAD za enostavno oblikovanje vmesnikov GTK +, Glade ustvari GUI kot datoteko XML, ki jo je mogoče uporabiti s katerim koli programskim jezikom za izdelavo GUI, po izvozu datoteke XML GUI bomo datoteko XML lahko povezali z našim programom za opravljanje želenih opravil.

Na kratko bomo razložili oba načina.

Pisanje grafičnega uporabniškega vmesnika samo s kodo je lahko težko za noobnega programerja in zelo zapravlja čas, toda z njegovo uporabo lahko za svoje programe ustvarimo zelo funkcionalne grafične vmesnike, bolj kot tiste, ki jih ustvarimo z nekaterimi orodji, kot je Glade.

Vzemimo naslednji primer.

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

from gi.repository import Gtk

class ourwindow(Gtk.Window):

    def __init__(self):
        Gtk.Window.__init__(self, title="My Hello World Program")
        Gtk.Window.set_default_size(self, 400,325)
        Gtk.Window.set_position(self, Gtk.WindowPosition.CENTER)

        button1 = Gtk.Button("Hello, World!")
        button1.connect("clicked", self.whenbutton1_clicked)

        self.add(button1)
        
    def whenbutton1_clicked(self, button):
      print "Hello, World!"

window = ourwindow()        
window.connect("delete-event", Gtk.main_quit)
window.show_all()
Gtk.main()

Kopirajte zgornjo kodo, jo prilepite v datoteko\" test.py " in nastavite dovoljenje 755 na datoteko test.py ter jo zaženite pozneje z uporabo\" ./test.py ”, to boste dobili.

# nano test.py
# chmod 755 test.py
# ./test.py

S klikom na gumb vidite v stavku natisnjen stavek\" Pozdravljen, svet! ":

Naj podrobneje razložim kodo.

  1. #!/usr/bin/python : Privzeta pot za tolmač Python (v večini primerov različica 2.7) mora biti ta vrstica prva vrstica v vsaki datoteki Python.
  2. # - * - kodiranje: utf-8 - * - : Tu nastavimo privzeto kodiranje datoteke, UTF-8 je najboljše, če želite podpirati neangleške jezike, pustite to je tako.
  3. iz gi.repository import Gtk : Tu uvozimo knjižnico GTK 3, da jo uporabimo v našem programu.
  4. Razred naše okno (Gtk.Window): Tu ustvarjamo nov razred, ki se imenuje\"naše okno", vrsto predmeta razreda pa nastavimo tudi na\"Gtk.Window".
  5. def __init __ (self) : Nič novega, tu definiramo glavne komponente okna.
  6. Gtk.Window .__ init __ (self, title = "Moj program Hello World") : S to vrstico nastavimo naslov\"My Hello World Program" na\"ourwindow" okno, lahko spremenite naslov, če želite.
  7. Gtk.Window.set_default_size (self, 400.325) : Mislim, da ta vrstica ne potrebuje razlage, tukaj nastavljamo privzeto širino in višino našega okna.
  8. Gtk.Window.set_position (self, Gtk.WindowPosition.CENTER) : S to vrstico bomo lahko nastavili privzeti položaj okna, v tem primeru ga nastavimo na sredino s parametrom\"Gtk.WindowPosition.CENTER", če ga želite, ga lahko spremenite v\"Gtk.WindowPosition.MOUSE", da odprete okno na položaju kazalca miške.
  9. button1 = Gtk.Button (»Pozdravljen, svet!«) : Ustvarili smo nov Gtk.Button in ga poimenovali\"button1", privzeto besedilo gumba je\" Pozdravljen, svet! «, Če želite, lahko ustvarite kateri koli pripomoček Gtk.
  10. button1.connect ("kliknil", self.whenbutton1_clicked) : Tu povezujemo signal\"kliknil" z dejanjem\"whenbutton1_clicked", tako da ob kliku na gumb, aktivirano je dejanje\"whenbutton1_clicked".
  11. self.add (button1) : Če želimo, da se prikažejo naši pripomočki Gtk, jih moramo dodati v privzeto okno, ta preprosta vrstica doda pripomoček\"button1" v okno, to je zelo potrebno.
  12. def whenbutton1_clicked (self, button) : Zdaj tukaj definiramo dejanje\"whenbutton1_clicked", definiramo, kaj se bo zgodilo s klikom na gradnik\"button1", Parameter\"(self, button)" je pomemben za določitev vrste nadrejenega objekta signala.
  13. natisni »Pozdravljeni, svet!« : tukaj mi ni treba več razlagati.
  14. window = ourwindow() : Ustvariti moramo novo globalno spremenljivko in jo nastaviti v razred ourwindow(), da jo bomo lahko pozneje poklicali s knjižnico GTK +.
  15. window.connect ("delete-event", Gtk.main_quit) : Zdaj povezujemo signal\"delete-event" z dejanjem\"Gtk.main_quit", to je pomembno, da izbrišete vse gradnike, ko samodejno zapremo okno programa.
  16. window.show_all() : prikaz okna.
  17. Gtk.main() : Zagon knjižnice Gtk.

To je to, enostavno kajne? In zelo funkcionalen, če želimo ustvariti nekaj velikih aplikacij. Za več informacij o ustvarjanju vmesnikov GTK + z uporabo samo kode obiščite spletno mesto uradne dokumentacije na naslovu:

Vadnice za Python GTK3

Kot sem rekel na začetku članka, je Glade zelo enostavno orodje za ustvarjanje vmesnikov, ki jih potrebujemo za naše programe, je zelo znan med razvijalci in z njim je bilo ustvarjenih veliko odličnih aplikacijskih vmesnikov. Ta način se imenuje\"Hitri razvoj aplikacij".

Glade morate namestiti, da ga začnete uporabljati v zagonu Debian/Ubuntu/Mint:

$ sudo apt­-get install glade

V RedHat/Fedora/CentOS zaženite:

# yum install glade

Ko prenesete in namestite program in ga zaženete, boste na levi strani videli razpoložljive pripomočke Gtk, kliknite pripomoček\" okno ", da ustvarite novo okno.

Opazili boste, da je ustvarjeno novo prazno okno.

Zdaj mu lahko dodate nekaj pripomočkov, v levi orodni vrstici kliknite pripomoček\" gumb " in kliknite prazno okno, da v okno dodate gumb.

Opazili boste, da je ID gumba\" button1 ", zdaj poglejte zavihek Signali v desni orodni vrstici in poiščite signal\" kliknili " in vnesite\" button1_clicked " pod njim.

Zdaj, ko smo ustvarili svoj GUI, ga izvozimo. Kliknite meni\" Datoteka " in izberite\" Shrani ", datoteko shranite v svoj domači imenik z imenom\" myprogram.glade «In izstopite.

Zdaj ustvarite novo datoteko\" test.py " in vanjo vnesite naslednjo kodo.

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

from gi.repository import Gtk

class Handler:
    def button_1clicked(self, button):
      print "Hello, World!"

builder = Gtk.Builder()
builder.add_from_file("myprogram.glade")
builder.connect_signals(Handler())

ournewbutton = builder.get_object("button1")
ournewbutton.set_label("Hello, World!")

window = builder.get_object("window1")

window.connect("delete-event", Gtk.main_quit)
window.show_all()
Gtk.main()

Datoteko shranite, dajte ji 755 dovoljenj kot prej in jo zaženite z uporabo\" ./test.py " in to boste dobili.

# nano test.py
# chmod 755 test.py
# ./test.py

Kliknite gumb in opazili boste, da je v terminalu natisnjen stavek\" Pozdravljen, svet! ".

Zdaj pa razložimo nove stvari:

  1. Upravljalec razreda : Tu ustvarjamo razred z imenom\"Upravljalec", ki bo vseboval definicije za dejanja in signale, ki jih ustvarimo za grafični uporabniški vmesnik.
  2. builder = Gtk.Builder() : Ustvarili smo novo globalno spremenljivko z imenom\"builder", ki je pripomoček Gtk.Builder, to je pomembno za uvoz datoteke .glade.
  3. builder.add_from_file (»myprogram.glade«) : Tu uvozimo datoteko\"myprogram.glade", da jo uporabimo kot privzeti GUI za naš program.
  4. builder.connect_signals (Handler()) : Ta vrstica poveže datoteko .glade z razredom handlerja, tako da dejanja in signali, ki jih določimo v razredu\"Handler", delujejo dobro, ko izvajamo program.
  5. ournewbutton = builder.get_object (“button1”) : Zdaj uvažamo predmet\"button1" iz datoteke .glade in ga posredujemo tudi globalni spremenljivki\" ournewbutton ", da ga uporabite pozneje v našem programu.
  6. ournewbutton.set_label (“Hello, World!”) : Z metodo\"set.label" smo privzeto besedilo gumba nastavili na\"Hello, World!" stavek.
  7. window = builder.get_object (“window1”) : Tu smo poklicali objekt\"window1" iz datoteke .glade, da ga prikažemo pozneje v programu.

In to je to! Uspešno ste ustvarili svoj prvi program pod Linuxom!

Seveda je treba narediti veliko bolj zapletenih stvari, da bi ustvarili resnično aplikacijo, ki nekaj naredi, zato vam priporočam, da si ogledate dokumentacijo GTK + in API GObject na:

  1. GTK + Referenčni priročnik
  2. Priročnik za API Python GObject
  3. sklic na PyGObject

Ste že razvili kakšno aplikacijo na namizju Linux? Kateri programski jezik in orodja so to uporabljali? Kaj menite o ustvarjanju aplikacij s pomočjo Pythona in GTK 3?