Kuidas luua GUI-rakendusi Linuxi töölaua all PyGObjecti abil - 1. osa


Rakenduste loomine Linuxis saab toimuda erinevatel viisidel, kuid selleks on piiratud viisid, seega kasutades lihtsamaid ja kõige funktsionaalsemaid programmeerimiskeeli ja teeke, uurime seetõttu kiiresti rakenduste loomist Linuxi all töölaual, kasutades Pythoni programmeerimiskeelega GTK + teeki, mida nimetatakse\"PyGObject".

PyGObject kasutab programmeerimiskeeltele nagu Python sidumise loomiseks GObject Introspectionit, PyGObject on järgmine põlvkond PyGTK-st, võite öelda, et PyGObject = Python + GTK3.

Täna alustame seeriat GUI (Graphical User Interface) rakenduste loomise kohta Linuxi töölaual, kasutades GTK + teeki ja PyGobject keelt, seeria hõlmab järgmisi teemasid:

Kõigepealt peab teil olema Pythonis mõned põhiteadmised; Python on väga kaasaegne ja hõlpsasti kasutatav programmeerimiskeel. See on üks kuulsamaid programmeerimiskeeli maailmas, kasutades Pythoni, saate luua palju suurepäraseid rakendusi ja tööriistu. Võite osaleda mõnel tasuta kursusel, näiteks veebisaidil codeacademy.com, või lugeda Pythoni kohta raamatuid aadressil:

GTK + on avatud lähtekoodiga platvormidevaheline tööriistakomplekt graafiliste kasutajaliideste loomiseks töölauarakendustele. Seda hakati esimest korda kasutama 1998. aastal GIMP-i GUI-tööriistakomplektina, hiljem kasutati seda paljudes muudes rakendustes ja peagi sai GUI-de loomiseks üks kuulsamaid raamatukogusid. GTK + vabastatakse LGPL-i litsentsi alusel.

GUI-rakenduste loomine Linuxi all

GTK + ja Pythoni abil saab rakendusi luua kahel viisil:

  1. Graafilise liidese kirjutamine ainult koodi abil.
  2. Graafilise liidese kujundamine programmi\" Glade " abil; mis on RAD-i tööriist GTK + liideste hõlpsaks kujundamiseks, genereerib Glade GUI XML-failina, mida saab kasutada mis tahes programmeerimiskeelega GUI, pärast GUI XML-faili eksportimist saame linkida XML-faili oma programmiga soovitud tööde tegemiseks.

Selgitame mõlemat viisi lühidalt.

Ainult koodi abil graafilise kasutajaliidese kirjutamine võib olla noob-programmeerija jaoks natuke keeruline ja aeganõudev, kuid seda kasutades saame oma programmidele luua väga funktsionaalsed GUI-d, rohkem kui need, mille loome mõne tööriista abil, näiteks Glade.

Võtame järgmise näite.

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

Kopeerige ülaltoodud kood, kleepige see\" test.py " faili ja määrake failil test.py 755 luba ning käivitage fail hiljem, kasutades\" ./test.py ”, selle saate.

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

Nupule klõpsates näete terminali välja trükitud lauset\" Tere, maailm! ":

Lubage mul selgitada koodi üksikasjalikult.

  1. #!/usr/bin/python : Pythoni tõlgi vaiketee (enamikul juhtudel versioon 2.7), see rida peab olema iga Pythoni faili esimene rida.
  2. # - * - kodeerimine: utf-8 - * - : siin määrasime faili vaikekodeerimise, UTF-8 on parim, kui soovite toetada mitte-inglise keeli, jätke see nii.
  3. gi.repository import Gtk-st : siin impordime GTK 3 kogu, et seda meie programmis kasutada.
  4. Class ourwindow (Gtk.Window): siin loome uue klassi, mida nimetatakse\"ourwindow \", samuti määrame klassiobjekti tüübiks\"Gtk.Window".
  5. def __init __ (ise) : pole midagi uut, siin määratleme peaakna komponendid.
  6. Gtk.Window .__ init __ (ise, pealkiri = "Minu tere maailmaprogramm") : kasutame seda rida, et määrata\"Minu tere maailma programm \" pealkirjaks\"meieaken \" aknas saate soovi korral pealkirja muuta.
  7. Gtk.Window.set_default_size (self, 400,325) : Ma ei arva, et see rida vajab selgitamist, siin määrame oma akna vaikelaiuse ja -kõrguse.
  8. Gtk.Window.set_position (ise, Gtk.WindowPosition.CENTER) : seda rida kasutades saame määrata akna vaikeasukoha, antud juhul määrasime selle keskmesse parameetri\"Gtk.WindowPosition.CENTER" abil, kui soovite, saate selle muuta hiirekursori asukoha akna avamiseks väärtuseks\"Gtk.WindowPosition.MOUSE".
  9. button1 = Gtk.Button („Tere, maailm!”) : lõime uue Gtk.Buttoni ja kutsusime seda\"button1 '', nupu vaiketekst on \" Tere, maailm! ”, Võite soovi korral luua mis tahes Gtk-vidina.
  10. button1.connect ("clicked", self.whenbutton1_clicked) : siin seome signaali\"clicked \" toiminguga\"whenbutton1_clicked \", nii et kui nupul klõpsatakse, aktiveeritakse toiming\"whenbutton1_clicked \".
  11. ise.add (nupp1) : kui tahame, et meie Gtk-vidinad ilmuksid, peame need lisama vaikeaknasse, see lihtne rida lisab aknale vidina\"button1", seda on väga vaja teha.
  12. def whenbutton1_clicked (ise, nupp) : Nüüd määratleme siin toimingu\"whenbutton1_clicked", määratleme, mis juhtub, kui klõpsatakse vidinal\"button1", Parameeter\"(ise, nupp)" on oluline signaali vanemobjekti tüübi täpsustamiseks.
  13. print "Tere, maailm!" : Ma ei pea siin rohkem selgitama.
  14. window = ourwindow() : peame looma uue globaalse muutuja ja määrama selle klassiks meiewindow(), et saaksime seda hiljem GTK + teeki kasutades kutsuda.
  15. window.connect (“delete-event”, Gtk.main_quit) : ühendame nüüd signaali "delete-event" toiminguga "Gtk.main_quit", see on oluline, et kustutada kõik vidinad pärast programmi akna automaatset sulgemist.
  16. window.show_all() : akna kuvamine.
  17. Gtk.main() : Gtki teegi käitamine.

See on kõik, lihtne pole? Ja väga funktsionaalne, kui soovime luua mõningaid suuri rakendusi. GTK + liideste loomise kohta ainult koodiga lisateabe saamiseks külastage ametlikku dokumentatsiooni veebisaiti aadressil

Pythoni GTK3 õpetused

Nagu ma artikli alguses ütlesin, on Glade meie programmide jaoks vajalike liideste loomiseks väga lihtne tööriist, see on arendajate seas väga kuulus ja selle abil loodi palju suurepäraseid rakenduste liideseid. Nii nimetatakse\"rakenduste kiiret arendamist \".

Selle kasutamise alustamiseks peate installima Glade'i Debiani/Ubuntu/Mint käivitamisel:

$ sudo apt­-get install glade

RedHati/Fedora/CentOS-is käivitage:

# yum install glade

Pärast programmi allalaadimist ja installimist ning pärast selle käivitamist näete vasakul saadaolevaid Gtk-vidinaid, uue akna loomiseks klõpsake vidinal\" aken ".

Märkate, et luuakse uus tühi aken.

Nüüd saate sellele lisada mõned vidinad, klõpsake vasakul tööriistaribal\" nupp " vidinat ja klõpsake tühja akna, et nupp aknale lisada.

Märkate, et nupu ID on\" nupp1 ", vaadake nüüd parempoolse tööriistariba vahekaarti Signaalid ja otsige signaali\" klõpsatud " ja sisestage\" button1_clicked " selle all.

Nüüd, kui oleme oma GUI loonud, ekspordime selle. Klõpsake menüül\" Fail " ja valige\" Salvesta ", salvestage fail oma kodukataloogi nimega\" myprogram.glade ”Ja väljuge.

Nüüd looge uus\" test.py " fail ja sisestage selle sisse järgmine kood.

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

Salvestage fail, andke sellele 755 luba nagu varem, ja käitage see\" ./test.py " abil ja seda saate.

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

Klõpsake nuppu ja märkate, et terminali on trükitud lause\" Tere, maailm! ".

Nüüd selgitame uusi asju:

  1. klassi käitleja : siin loome klassi nimega "Handler", mis sisaldab GUI jaoks loodud toimingute ja signaalide määratlusi.
  2. builder = Gtk.Builder() : lõime uue globaalse muutuja nimega\"builder", mis on vidin Gtk.Builder, see on oluline .glade-faili importimiseks.
  3. builder.add_from_file (“myprogram.glade”) : Siit impordime faili "myprogram.glade", et seda kasutada meie programmi vaikeseadistusena.
  4. builder.connect_signals (Handler()) : see rida ühendab .glade-faili handler-klassiga, nii et klassis\"Handler" määratletud toimingud ja signaalid töötavad hästi käivitame programmi.
  5. ournewbutton = builder.get_object ("button1") : nüüd impordime\nupp1 "objekti failist .glade, edastame selle ka globaalsele muutujale \" meie uus nupp ”, et seda hiljem meie programmis kasutada.
  6. ournewbutton.set_label (“Tere, maailm!”) : me kasutasime meetodit "set.label", et määrata vaikenupu tekstiks "Tere, maailm!" lause.
  7. window = builder.get_object (“window1”) : Siin kutsusime faili .glade objekti\"window1", et seda hiljem programmis näidata.

Ja see ongi kõik! Olete oma esimese programmi Linuxi abil edukalt loonud!

Muidugi on reaalse rakenduse loomiseks, mis midagi teeb, palju keerulisemaid asju teha, seetõttu soovitan teil tutvuda GTK + dokumentatsiooniga ja GObject API-ga aadressil:

  1. GTK + kasutusjuhend
  2. Pythoni GObjecti API viide
  3. PyGObjecti viide

Kas olete Linuxi töölaua all varem mõne rakenduse välja töötanud? Millist programmeerimiskeelt ja tööriistu on selle kasutamiseks kasutatud? Mida arvate Pythoni ja GTK 3 abil rakenduste loomisest?