Hvernig á að búa til GUI forrit undir Linux skjáborði með PyGObject - Part 1


Að búa til forrit á Linux er hægt að gera með mismunandi leiðum, en það eru takmarkaðar leiðir til að gera, þannig að með því að nota einföldustu og hagnýtustu forritunarmálin og bókasöfnin, þess vegna ætlum við að skoða fljótt um að búa til forrit undir Linux skjáborð með því að nota GTK+ bókasafnið með Python forritunarmáli sem kallast „PyGObject“.

PyGObject notar GObject Introspection til að búa til bindingu fyrir forritunarmál eins og Python, PyGObject er næsta kynslóð frá PyGTK, þú getur sagt að PyGObject = Python + GTK3.

Í dag ætlum við að hefja röð um að búa til GUI (grafískt notendaviðmót) forrit undir Linux skjáborðinu með því að nota GTK+ bókasafn og PyGobject tungumál, röðin mun fjalla um eftirfarandi efni:

Fyrst af öllu verður þú að hafa grunnþekkingu í Python; Python er mjög nútímalegt og auðvelt í notkun forritunarmál. Það er eitt frægasta forritunarmál í heimi, með Python muntu geta búið til mörg frábær forrit og verkfæri. Þú gætir tekið nokkur ókeypis námskeið eins og þau á codeacademy.com eða þú gætir lesið nokkrar bækur um Python á:

GTK+ er opinn uppspretta þverpalla verkfærasett til að búa til grafísk notendaviðmót fyrir skjáborðsforrit, það var fyrst byrjað árið 1998 sem GUI verkfærasett fyrir GIMP, síðar var það notað í mörgum öðrum forritum og varð fljótlega eitt frægasta bókasafnið til að búa til GUI. GTK+ er gefið út undir LGPL leyfinu.

Að búa til GUI forrit undir Linux

Það eru tvær leiðir til að búa til forritin með GTK+ og Python:

  1. Að skrifa grafíska viðmótið eingöngu með kóða.
  2. Hönnun grafíska viðmótsins með því að nota \Glade forritið; sem er RAD tól til að hanna GTK+ tengi auðveldlega, Glade býr til GUI sem XML skrá sem hægt er að nota með hvaða forritunarmáli sem er til að byggja upp GUI, eftir að hafa flutt út XML skrá GUI, munum við geta tengt XML skrána við forritið okkar til að vinna þau störf sem við viljum.

Við munum útskýra báðar leiðir í stuttu máli.

Að skrifa GUI aðeins með því að nota kóða getur verið svolítið erfitt fyrir noob forritara og mjög tímaeyðandi, en með því að nota það getum við búið til mjög hagnýt GUI fyrir forritin okkar, fleiri en þau sem við búum til með sumum verkfærum eins og Glade.

Tökum eftirfarandi dæmi.

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

Afritaðu kóðann hér að ofan, límdu hann inn í \test.py skrá og stilltu 755 heimild á test.py skrána og keyrðu skrána síðar með því að nota \./test.py“, það er það sem þú færð.

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

Með því að smella á hnappinn sérðu \Halló, heimur! setninguna útprentaða í flugstöðinni:

Leyfðu mér að útskýra kóðann í nákvæmri útskýringu.

  1. #!/usr/bin/python: Sjálfgefin slóð fyrir Python túlkinn (útgáfa 2.7 í flestum tilfellum), þessi lína verður að vera fyrsta línan í hverri Python skrá.
  2. # -*- kóðun: utf-8 -*-: Hér setjum við sjálfgefna kóðun fyrir skrána, UTF-8 er best ef þú vilt styðja ekki ensk tungumál, farðu svona.
  3. frá gi.repository import Gtk: Hér erum við að flytja inn GTK 3 bókasafnið til að nota það í forritinu okkar.
  4. Class ourwindow(Gtk.Window): Hér erum við að búa til nýjan flokk, sem kallast \ourwindow\, við erum líka að stilla flokkshlutagerðina á \Gtk.Window.
  5. def __init__(self): Ekkert nýtt, við erum að skilgreina aðalgluggahlutana hér.
  6. Gtk.Window.__init__(self, title=”My Hello World Program”): Við erum að nota þessa línu til að stilla „My Hello World Program“ titilinn á „ourwindow“ glugga, geturðu breytt titlinum ef þú vilt.
  7. Gtk.Window.set_default_size(self, 400.325): Ég held að þessi lína þurfi ekki útskýringar, hér erum við að stilla sjálfgefna breidd og hæð fyrir gluggann okkar.
  8. Gtk.Window.set_position(self, Gtk.WindowPosition.CENTER): Með því að nota þessa línu getum við stillt sjálfgefna staðsetningu fyrir gluggann, í þessu tilviki setjum við hann í miðjuna með því að nota \Gtk.WindowPosition.CENTER færibreytuna, ef þú vilt geturðu breytt henni í \Gtk.WindowPosition.MOUSE til að opna gluggann á músarbendlinum.
  9. button1 = Gtk.Button(“Halló, heimur!”): Við bjuggum til nýjan Gtk.Button, og við kölluðum hann \button1, sjálfgefinn texti fyrir hnappinn er\Halló, heimur!”, þú mátt búa til hvaða Gtk græju sem er ef þú vilt.
  10. button1.connect(“clicked”, self.whenbutton1_clicked): Hér erum við að tengja „smellt“ merkið við „whenbutton1_clicked“ aðgerðina, þannig að þegar smellt er á hnappinn, „whenbutton1_clicked“ aðgerðin er virkjuð.
  11. self.add(button1): Ef við viljum að Gtk græjurnar okkar birtist verðum við að bæta þeim við sjálfgefna gluggann, þessi einfalda lína bætir \button1 græjunni við gluggann, það er mjög nauðsynlegt að gera þetta.
  12. def whenbutton1_clicked(self, button): Nú erum við að skilgreina „whenbutton1_clicked“ aðgerðina hér, við erum að skilgreina hvað á að gerast þegar smellt er á \button1“ græjuna, „(sjálf, hnappur)“ færibreytan er mikilvæg til að tilgreina tegund móðurhluts merkis.
  13. prentaðu „Halló, heimur!“: Ég þarf ekki að útskýra meira hér.
  14. window = ourwindow(): Við verðum að búa til nýja alþjóðlega breytu og setja hana á ourwindow() flokkinn svo að við getum kallað hana síðar með því að nota GTK+ bókasafnið.
  15. window.connect(“delete-event”, Gtk.main_quit): Nú erum við að tengja \delete-event“ merkið við \Gtk.main_quit“ aðgerðina, þetta er mikilvægt til að eyða öllum búnaðinum eftir að við lokum forritsglugganum sjálfkrafa.
  16. window.show_all(): Sýnir gluggann.
  17. Gtk.main(): Keyrir Gtk bókasafnið.

Það er það, auðvelt er það ekki? Og mjög hagnýtur ef við viljum búa til stór forrit. Fyrir frekari upplýsingar um að búa til GTK+ viðmót með því að nota kóðann, geturðu heimsótt opinberu skjalavefsíðuna á:

Python GTK3 kennsluefni

Eins og ég sagði í upphafi greinarinnar, Glade er mjög auðvelt tól til að búa til viðmótin sem við þurfum fyrir forritin okkar, það er mjög frægt meðal þróunaraðila og mörg frábær forritaviðmót voru búin til með því að nota það. Þessi leið er kölluð „Rapid application development“.

Þú verður að setja upp Glade til að byrja að nota það, á Debian/Ubuntu/Mint keyrslu:

$ sudo apt­-get install glade

Á RedHat/Fedora/CentOS, keyrðu:

# yum install glade

Eftir að þú hefur hlaðið niður og sett upp forritið, og eftir að þú hefur keyrt það, muntu sjá tiltækar Gtk græjur til vinstri, smelltu á \glugga græjuna til að búa til nýjan glugga.

Þú munt taka eftir því að nýr tómur gluggi er búinn til.

Þú getur nú bætt nokkrum græjum við það, á vinstri tækjastikunni, smelltu á \hnappinn græjuna og smelltu á tóma gluggann til að bæta hnappnum við gluggann.

Þú munt taka eftir því að auðkenni hnappsins er \hnappur1, vísaðu nú í Merki flipann á hægri tækjastikunni og leitaðu að \smelltu merkinu og sláðu inn\button1_clicked undir því.

Nú þegar við höfum búið til GUI okkar skulum við flytja það út. Smelltu á \Skrá valmyndina og veldu \Vista, vistaðu skrána í heimaskránni þinni undir nafninu \myprogram.glade” og fara út.

Nú skaltu búa til nýja \test.py skrá og slá inn eftirfarandi kóða inn í hana.

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

Vistaðu skrána, gefðu henni 755 heimildir eins og áður og keyrðu hana með \./test.py, og það er það sem þú munt fá.

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

Smelltu á hnappinn og þú munt taka eftir því að \Halló, heimur! setningin er prentuð í flugstöðinni.

Nú skulum við útskýra nýju hlutina:

  1. Class Handler: Hér erum við að búa til flokk sem kallast Handler sem mun innihalda skilgreiningarnar fyrir aðgerðirnar og merkin sem við búum til fyrir GUI.
  2. builder = Gtk.Builder(): Við bjuggum til nýja alþjóðlega breytu sem heitir \builder“ sem er Gtk.Builder búnaður, þetta er mikilvægt til að flytja inn .glade skrána.< /li>
  3. builder.add_from_file(“myprogram.glade”): Hér erum við að flytja inn \myprogram.glade“ skrána til að nota hana sem sjálfgefið GUI fyrir forritið okkar.
  4. builder.connect_signals(Handler()): Þessi lína tengir .glade skrána við meðhöndlunarflokkinn, þannig að aðgerðir og merki sem við skilgreinum undir \Handler flokki virka vel þegar við keyrum forritið.
  5. ournewbutton = builder.get_object(“button1”): Nú erum við að flytja inn \button1 hlutinn úr .glade skránni, við sendum hann líka í alþjóðlegu breytuna\ournewbutton“ til að nota hann síðar í forritinu okkar.
  6. ournewbutton.set_label(“Halló, heimur!”): Við notuðum \set.label“ aðferðina til að stilla sjálfgefna hnappatextann á \Halló, heimur! setning.
  7. window = builder.get_object(“window1”): Hér kölluðum við \window1“ hlutinn úr .glade skránni til að sýna hann síðar í forritinu.

Og þannig er það! Þú hefur búið til fyrsta forritið þitt undir Linux!

Auðvitað eru miklu flóknari hlutir sem þarf að gera til að búa til alvöru forrit sem gerir eitthvað, þess vegna mæli ég með að þú skoðir GTK+ skjölin og GObject API á:

  1. GTK+ tilvísunarhandbók
  2. Python GObject API tilvísun
  3. PyGObject tilvísun

Hefur þú þróað eitthvað forrit áður undir Linux skjáborðinu? Hvaða forritunarmál og verkfæri hafa notað til að gera það? Hvað finnst þér um að búa til forrit með Python & GTK 3?