GUI-sovellusten luominen Linux-työpöydällä PyGObjectin avulla - Osa 1


Sovellusten luominen Linuxissa voidaan tehdä eri tavoilla, mutta tapoja tehdä on rajoitetusti, joten käytämme yksinkertaisimpia ja toimivimpia ohjelmointikieliä ja kirjastoja, siksi aiomme tarkastella nopeasti sovellusten luomista Linuxin alla. työpöytä käyttäen GTK+ -kirjastoa Python-ohjelmointikielellä, jota kutsutaan nimellä "PyGObject".

PyGObject käyttää GObject Introspection -ominaisuutta luodakseen sidoksen ohjelmointikielille, kuten Python. PyGObject on PyGTK:n seuraavan sukupolven, voit sanoa, että PyGObject=Python + GTK3.

Tänään aloitamme sarjan GUI (Graphical User Interface) -sovellusten luomisesta Linux-työpöydälle GTK+-kirjastoa ja PyGobject-kieltä käyttäen. Sarja kattaa seuraavat aiheet:

Tietoja Pythonista

Ensinnäkin sinulla on oltava perustiedot Pythonista; Python on erittäin moderni ja helppokäyttöinen ohjelmointikieli. Se on yksi maailman tunnetuimmista ohjelmointikielistä, Pythonin avulla voit luoda monia hienoja sovelluksia ja työkaluja. Voit suorittaa ilmaisia kursseja, kuten osoitteessa codeacademy.com tai lukea Python-kirjoja osoitteessa:

Tietoja GTK+:sta

GTK+ on avoimen lähdekoodin monialustainen työkalupakki graafisten käyttöliittymien luomiseen työpöytäsovelluksiin. Se otettiin käyttöön vuonna 1998 GUI-työkalusarjana GIMP:lle, myöhemmin sitä käytettiin monissa muissa sovelluksissa ja siitä tuli pian yksi tunnetuimmista kirjastoista, jotka luovat graafisia käyttöliittymiä. GTK+ on julkaistu LGPL-lisenssillä.

GUI-sovellusten luominen Linuxissa

Sovellusten luomiseen GTK+:lla ja Pythonilla on kaksi tapaa:

  1. Graafisen käyttöliittymän kirjoittaminen vain koodilla.
  2. Graafisen käyttöliittymän suunnittelu Glade -ohjelmalla; joka on RAD-työkalu GTK+-rajapintojen suunnitteluun helposti, Glade luo GUI:n XML-tiedostona, jota voidaan käyttää minkä tahansa ohjelmointikielen kanssa GUI:n rakentamiseen. GUI:n XML-tiedoston viennin jälkeen voimme linkittää XML-tiedoston ohjelmaa tehdäksemme haluamamme työt.

Selitämme molemmat tavat lyhyesti.

Vain koodin mukainen tapa

GUI:n kirjoittaminen pelkällä koodilla voi olla hieman vaikeaa noob-ohjelmoijalle ja erittäin aikaavievää, mutta sen avulla voimme luoda erittäin toimivia graafisia käyttöliittymiä ohjelmillemme, enemmän kuin ne, joita luomme käyttämällä joitain työkaluja, kuten Glade.

Otetaan seuraava esimerkki.

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

Kopioi yllä oleva koodi, liitä se test.py-tiedostoon ja aseta 755-käyttöoikeus test.py-tiedostolle ja suorita tiedosto myöhemmin komennolla ./test.py ”, sen saat.

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

Napsauttamalla painiketta näet "Hei, maailma!" -lauseen tulostettuna terminaaliin:

Selitän koodin yksityiskohtaisesti.

  1. #!/usr/bin/python: Python-tulkin oletuspolku (useimmissa tapauksissa versio 2.7), tämän rivin on oltava ensimmäinen rivi jokaisessa Python-tiedostossa.
  2. # -*- koodaus: utf-8 -*-: Tässä asetetaan tiedoston oletuskoodaus, UTF-8 on paras, jos haluat tukea muita kuin englannin kieliä, jätä se sellaiseksi .
  3. gi.repository import Gtk:stä: Tässä tuomme GTK 3 -kirjaston käyttääksemme sitä ohjelmassamme.
  4. Luokka ourwindow(Gtk.Window): Tässä luomme uutta luokkaa, jota kutsutaan nimellä "ourwindow", asetamme myös luokan objektityypiksi "Gtk.Window".
  5. def __init__(self): Ei mitään uutta, määrittelemme tässä pääikkunan osat.
  6. Gtk.Window.__init__(self, title="My Hello World Program"): Käytämme tätä riviä asettaaksemme "My Hello World Program" -otsikon "ourwindow" -ikkunaan, voit muuttaa otsikko jos haluat.
  7. Gtk.Window.set_default_size(self, 400 325): En usko, että tämä rivi tarvitsee selitystä. Tässä asetetaan ikkunamme oletusleveys ja -korkeus.
  8. Gtk.Window.set_position(self, Gtk.WindowPosition.CENTER): Tämän rivin avulla voimme asettaa ikkunan oletuspaikan, tässä tapauksessa asetamme sen keskelle käyttämällä parametria "Gtk.WindowPosition.CENTER", voit halutessasi muuttaa sen arvoksi "Gtk.WindowPosition.MOUSE" avataksesi ikkunan hiiren osoittimen sijainnista.
  9. button1=Gtk.Button("Hei, maailma!"): loimme uuden Gtk.Buttonin ja kutsuimme sitä "button1" -painikkeen oletustekstiksi "Hei, maailma! ”, voit luoda minkä tahansa Gtk-widgetin, jos haluat.
  10. button1.connect("clicked", self.whenbutton1_clicked): Tässä linkitämme "clicked"-signaalin "whenbutton1_clicked" -toimintoon, joten kun painiketta napsautetaan, "kunpainike1_napsautettu" -toiminto on aktivoitu.
  11. self.add(button1): Jos haluamme Gtk-widgetimme näkyvän, meidän on lisättävä ne oletusikkunaan. Tämä yksinkertainen rivi lisää "button1" -widgetin ikkunaan, on erittäin tärkeää toimi näin.
  12. def whenbutton1_clicked(self, button): Nyt määritämme "whenbutton1_clicked" -toiminnon tässä, määrittelemme mitä tapahtuu, kun "button1" -widgetiä napsautetaan, "(itse, painike" ) ”-parametri on tärkeä signaalin pääobjektityypin määrittämiseksi.
  13. tulosta "Hei, maailma!": Minun ei tarvitse selittää enempää tässä.
  14. window=ourwindow(): Meidän on luotava uusi globaali muuttuja ja asetettava se ourwindow()-luokkaan, jotta voimme kutsua sitä myöhemmin GTK+-kirjaston avulla.
  15. window.connect("delete-event", Gtk.main_quit): Nyt yhdistämme "delete-event" -signaalin "Gtk.main_quit" -toimintoon. Tämä on tärkeää poistamisen kannalta. kaikki widgetit sen jälkeen, kun suljemme ohjelmaikkunan automaattisesti.
  16. window.show_all(): Näyttää ikkunan.
  17. Gtk.main(): Gtk-kirjaston suorittaminen.

Siinä se, helppoa eikö? Ja erittäin toimiva, jos haluamme luoda suuria sovelluksia. Lisätietoja GTK+-rajapintojen luomisesta vain koodin avulla voit vierailla virallisella dokumentaatiosivustolla osoitteessa:

Python GTK3 opetusohjelmat

Glade Designer Way

Kuten artikkelin alussa sanoin, Glade on erittäin helppo työkalu ohjelmillemme tarvitsemien käyttöliittymien luomiseen, se on erittäin kuuluisa kehittäjien keskuudessa ja sen avulla luotiin monia mahtavia sovellusrajapintoja. Tätä tapaa kutsutaan "Nopeaksi sovellusten kehittämiseksi".

Sinun on asennettava Glade, jotta voit aloittaa sen käytön Debian/Ubuntu/Mint-ajon aikana:

sudo apt­-get install glade

Suorita RedHat/Fedora/CentOS:ssä:

yum install glade

Kun olet ladannut ja asentanut ohjelman ja suoritettuasi sen, näet käytettävissä olevat Gtk-widgetit vasemmalla. Napsauta ikkuna -widgetiä luodaksesi uuden ikkunan.

Huomaat, että uusi tyhjä ikkuna luodaan.

Voit nyt lisätä siihen joitain widgetejä. Napsauta vasemmanpuoleisessa työkalupalkissa painike -widgetiä ja napsauta tyhjää ikkunaa lisätäksesi painikkeen ikkunaan.

Huomaat, että painikkeen tunnus on "button1 ", katso nyt oikeanpuoleisen työkalupalkin Signaalit-välilehteä ja etsi "napsautettu" -signaali ja kirjoita "button1_clicked ” sen alla.

Nyt kun olemme luoneet graafisen käyttöliittymämme, viedään se. Napsauta Tiedosto -valikkoa ja valitse Tallenna, tallenna tiedosto kotihakemistoosi nimellä "myprogram.glade" ja poistu.

Luo nyt uusi test.py-tiedosto ja kirjoita siihen seuraava koodi.

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

Tallenna tiedosto, anna sille 755 käyttöoikeutta kuten ennen ja suorita se komennolla "./test.py", niin saat.

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

Napsauta painiketta, niin huomaat, että "Hei, maailma!" -lause on painettu terminaaliin.

Selitetään nyt uusia asioita:

  1. Luokan käsittelijä: Tässä luomme "Käsittelijä" -nimisen luokan, joka sisältää määritelmät toiminnoista ja signaaleista, jotka luomme graafista käyttöliittymää varten.
  2. builder=Gtk.Builder(): loimme uuden globaalin muuttujan nimeltä "builder", joka on Gtk.Builder-widget. Tämä on tärkeää .glade-tiedoston tuomiseksi.
  3. builder.add_from_file("myprogram.glade"): Tässä tuomme "myprogram.glade" -tiedoston käyttääksemme sitä oletuskäyttöliittymänä ohjelmallemme.
  4. builder.connect_signals(Handler()): Tämä rivi yhdistää .glade-tiedoston käsittelijäluokkaan, jotta "Handler" -luokassa määrittämämme toiminnot ja signaalit toimivat hyvin, kun suoritamme ohjelmaa. .
  5. ournewbutton=builder.get_object("button1"): Nyt tuomme "button1" -objektin .glade-tiedostosta, ja välitämme sen myös globaaliin muuttujaan "ournewbutton" käyttääksemme sitä myöhemmin ohjelmassamme.
  6. ournewbutton.set_label("Hei, maailma!"): Käytimme "set.label" -menetelmää asettaaksemme painikkeen oletustekstiksi "Hei, maailma!" " lause.
  7. window=builder.get_object("window1"): Tässä kutsuttiin "window1" -objektia .glade-tiedostosta näyttääksemme sen myöhemmin ohjelmassa.

Ja siinä se! Olet onnistuneesti luonut ensimmäisen ohjelmasi Linuxissa!

Tietysti on paljon monimutkaisempia asioita tehtävänä, jotta voidaan luoda todellinen sovellus, joka tekee jotain, siksi suosittelen tutustumaan GTK+:n dokumentaatioon ja GObject API:hen osoitteessa:

  1. GTK+ -viiteopas
  2. Python GObject API -viite
  3. PyGObject-viite

Oletko kehittänyt jotain sovellusta aiemmin Linux-työpöydän alla? Mitä ohjelmointikieltä ja työkaluja on käytetty sen tekemiseen? Mitä mieltä olet sovellusten luomisesta Python & GTK 3:lla?