Kā izveidot GUI lietojumprogrammas Linux darbvirsmā, izmantojot PyGObject - 1. daļa


Lietojumprogrammu izveidi operētājsistēmā Linux var veikt dažādos veidos, taču to ir ierobežoti, tāpēc, izmantojot vienkāršākās un funkcionālākās programmēšanas valodas un bibliotēkas, tieši tāpēc ātri apskatīsim lietojumprogrammu izveidi operētājsistēmā Linux darbvirsmā, izmantojot GTK + bibliotēku ar Python programmēšanas valodu, ko sauc par “PyGObject”.

PyGObject izmanto GObject Introspection, lai izveidotu saistīšanu programmēšanas valodām, piemēram, Python, PyGObject ir nākamā paaudze no PyGTK, jūs varat teikt, ka PyGObject = Python + GTK3.

Šodien mēs sāksim sēriju par GUI (Graphical User Interface) lietojumprogrammu izveidi Linux darbvirsmā, izmantojot GTK + bibliotēku un PyGobject valodu, sērijā tiks aplūkotas šādas tēmas:

Pirmkārt, jums ir jābūt pamatzināšanām Python; Python ir ļoti moderna un viegli lietojama programmēšanas valoda. Tā ir viena no slavenākajām programmēšanas valodām pasaulē, izmantojot Python, jūs varēsiet izveidot daudzas lieliskas lietojumprogrammas un rīkus. Jūs varat apmeklēt dažus bezmaksas kursus, piemēram, vietnē codeacademy.com, vai arī izlasīt dažas grāmatas par Python vietnē:

GTK + ir atvērtā koda starpplatformu rīku komplekts grafisko lietotāja saskarņu izveidei darbvirsmas lietojumprogrammām. Tas pirmo reizi tika izveidots 1998. gadā kā GUI rīku komplekts GIMP, vēlāk tas tika izmantots daudzās citās lietojumprogrammās un drīz kļuva par vienu no slavenākajām bibliotēkām, kas veidoja GUI. GTK + tiek izlaists ar LGPL licenci.

GUI lietojumprogrammu izveide operētājsistēmā Linux

Lietojumprogrammas var izveidot divējādi, izmantojot GTK + un Python:

  1. Grafiskā interfeisa rakstīšana, izmantojot tikai kodu.
  2. grafiskā interfeisa noformēšana, izmantojot programmu “ Glade ”; kas ir RAD rīks, lai viegli izveidotu GTK + saskarnes, Glade ģenerē GUI kā XML failu, kuru var izmantot ar jebkuru programmēšanas valodu, lai izveidotu GUI, pēc GUI XML faila eksportēšanas mēs varēsim saistīt XML failu ar mūsu programma, lai veiktu vēlamos darbus.

Mēs īsumā paskaidrosim abus veidus.

Rakstīt GUI, izmantojot tikai kodu, noob programmētājiem var būt nedaudz grūti un tērēt daudz laika, taču, izmantojot to, mēs varam izveidot ļoti funkcionālas GUI savām programmām, vairāk nekā tās, kuras mēs izveidojam, izmantojot dažus rīkus, piemēram, Glade.

Ņemsim šādu piemēru.

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

Kopējiet iepriekš minēto kodu, ielīmējiet to failā “ test.py ” un iestatiet 755 atļauju test.py failā un palaidiet failu vēlāk, izmantojot “ ./test.py ”, To jūs iegūsiet.

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

Noklikšķinot uz pogas, terminālā tiek izdrukāts teikums “Sveika, pasaule!

Ļaujiet man izskaidrot kodu detalizētā skaidrojumā.

  1. #!/usr/bin/python : Python tulka noklusējuma ceļš (2.7 versija lielākajā daļā gadījumu), šai rindai jābūt pirmajai rindai katrā Python failā.
  2. # - * - kodēšana: utf-8 - * - : šeit mēs iestatījām faila noklusējuma kodēšanu, UTF-8 ir labākais, ja vēlaties atbalstīt valodas, kas nav angļu valodas, atstājiet tas tā.
  3. no gi.repository import Gtk : šeit mēs importējam GTK 3 bibliotēku, lai to izmantotu mūsu programmā.
  4. Klase ourwindow (Gtk.Window): Šeit mēs izveidojam jaunu klasi, ko sauc par “ourwindow”, kā arī iestatām klases objekta tipu “Gtk.Window”.
  5. def __init __ (self) : nekas jauns, šeit mēs definējam galvenos loga komponentus.
  6. Gtk.Window .__ init __ (self, title = “Mana sveika pasaule”) : mēs izmantojam šo rindu, lai nosaukumam “Mana sveika pasaule” iestatītu logu “ourwindow”, jūs varat mainīt nosaukumu, ja vēlaties.
  7. Gtk.Window.set_default_size (self, 400, 325) : Es nedomāju, ka šai rindai ir nepieciešams paskaidrojums, šeit mēs iestatām mūsu loga noklusējuma platumu un augstumu.
  8. Gtk.Window.set_position (self, Gtk.WindowPosition.CENTER) : izmantojot šo rindu, mēs varēsim iestatīt loga noklusējuma pozīciju, šajā gadījumā mēs to iestatījām uz centru, izmantojot parametru “Gtk.WindowPosition.CENTER”, ja vēlaties, varat to mainīt uz “Gtk.WindowPosition.MOUSE”, lai atvērtu logu peles rādītāja pozīcijā.
  9. button1 = Gtk.Button (“Sveika, pasaule!”) : mēs izveidojām jaunu Gtk.Button un nosaucām to par “button1”. Pogas noklusējuma teksts ir “Hello! Pasaule! ”, Ja vēlaties, varat izveidot jebkuru Gtk logrīku.
  10. button1.connect (“clicked”, self.whenbutton1_clicked) : šeit mēs saistām signālu “noklikšķināts” ar darbību “whenbutton1_clicked”, lai, noklikšķinot uz pogas, tiktu parādīts “ aktivizēta darbība whenbutton1_clicked ”.
  11. self.add (button1) : ja mēs vēlamies, lai parādās mūsu Gtk logrīki, tie ir jāpievieno noklusējuma logam, šī vienkāršā līnija pievieno logam logrīku “button1”, tas ir tas ir ļoti nepieciešams.
  12. def whenbutton1_clicked (pats, poga) : Tagad mēs šeit definējam darbību “whenbutton1_clicked”, mēs definējam, kas notiks, kad tiks noklikšķināts uz “button1” logrīka, “( self, button) ”parametrs ir svarīgs, lai noteiktu signāla vecāka objekta tipu.
  13. drukāt “Sveika, pasaule!” : Man šeit vairāk nav jāpaskaidro.
  14. window = ourwindow() : mums ir jāizveido jauns globālais mainīgais un jāiestata tā klasē ourwindow(), lai vēlāk to varētu izsaukt, izmantojot bibliotēku GTK +.
  15. window.connect (“delete-event”, Gtk.main_quit) : Tagad mēs savienojam signālu “delete-event” ar darbību “Gtk.main_quit”, tas ir svarīgi lai automātiski izdzēstu programmas logu, dzēstu visus logrīkus.
  16. window.show_all() : tiek parādīts logs.
  17. Gtk.main() : darbojas Gtk bibliotēka.

Tas tā, viegli vai ne? Un ļoti funkcionāli, ja mēs vēlamies izveidot dažas lielas lietojumprogrammas. Lai iegūtu papildinformāciju par GTK + saskarņu izveidi, izmantojot tikai kodu, varat apmeklēt oficiālo dokumentācijas vietni:

Python GTK3 apmācības

Kā jau teicu raksta sākumā, Glade ir ļoti vienkāršs rīks, lai izveidotu mūsu programmām nepieciešamās saskarnes, tas ir ļoti slavens izstrādātāju vidū, un, izmantojot to, tika izveidotas daudzas lieliskas lietojumprogrammu saskarnes. Šādi tiek saukta “Ātrā lietojumprogrammu izstrāde”.

Lai sāktu to izmantot, Debian/Ubuntu/Mint palaidiet instalēt Glade:

$ sudo apt­-get install glade

RedHat/Fedora/CentOS palaidiet:

# yum install glade

Kad esat lejupielādējis un instalējis programmu un pēc tās palaišanas, kreisajā pusē redzēsit pieejamos Gtk logrīkus, noklikšķiniet uz logrīka logs , lai izveidotu jaunu logu.

Jūs ievērosiet, ka tiek izveidots jauns tukšs logs.

Tagad varat tam pievienot dažus logrīkus, kreisajā rīkjoslā noklikšķiniet uz logrīka “ poga ” un noklikšķiniet uz tukšā loga, lai pogu pievienotu logam.

Jūs pamanīsit, ka pogas ID ir “ button1 ”, tagad skatiet cilni Signāli labajā rīkjoslā un meklējiet signālu “noklikšķināts un ievadiet“ button1_clicked ”zem tā.

Tagad, kad esam izveidojuši GUI, eksportēsim to. Noklikšķiniet uz izvēlnes Fails un izvēlieties Saglabāt , saglabājiet failu mājas direktorijā nosaukumā myprogram.glade un Izeja.

Tagad izveidojiet jaunu failu “test.py ” un tajā ievadiet šādu kodu.

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

Saglabājiet failu, piešķiriet tam 755 atļaujas, tāpat kā iepriekš, un palaidiet to, izmantojot “ ./test.py ”, un to jūs arī iegūsit.

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

Noklikšķiniet uz pogas, un jūs pamanīsit, ka terminālā ir iespiests teikums “Sveika, pasaule! ”.

Tagad paskaidrosim jaunās lietas:

  1. klases apstrādātājs : šeit mēs izveidojam klasi ar nosaukumu “Handler”, kurā būs definētas darbības un signāli, ko mēs izveidojam GUI.
  2. builder = Gtk.Builder() : mēs izveidojām jaunu globālo mainīgo ar nosaukumu “builder”, kas ir Gtk.Builder logrīks, tas ir svarīgi, lai importētu .glade failu.
  3. builder.add_from_file (“myprogram.glade”) : šeit mēs importējam failu “myprogram.glade”, lai to izmantotu kā noklusējuma GUI mūsu programmai.
  4. builder.connect_signals (Handler()) : šī rinda savieno .glade failu ar apdarinātāju klasi, lai darbības un signāli, kurus mēs definējam klasē “Handler”, darbotos labi, kad mēs palaidiet programmu.
  5. ournewbutton = builder.get_object (“button1”) : Tagad mēs importējam objektu “button1” no .glade faila, kā arī nododam to globālajam mainīgajam “ournewbutton” izmantot to vēlāk mūsu programmā.
  6. ournewbutton.set_label (“Sveika, pasaule!”) : Mēs izmantojām metodi “set.label”, lai noklusējuma pogas tekstam iestatītu vērtību “Sveika, pasaule!” teikums.
  7. window = builder.get_object (“window1”) : Šeit mēs izsaucām objektu “window1” no .glade faila, lai to vēlāk parādītu programmā.

Un viss! Jūs esat veiksmīgi izveidojis savu pirmo programmu operētājsistēmā Linux!

Protams, ir daudz sarežģītākas lietas, kas jādara, lai izveidotu reālu lietojumprogrammu, kas kaut ko dara, tāpēc iesaku ieskatīties GTK + dokumentācijā un GObject API vietnē:

  1. GTK + uzziņu rokasgrāmata
  2. Python GObject API atsauce
  3. PyGObject atsauce

Vai Linux darbvirsmā iepriekš esat izstrādājis kādu lietojumprogrammu? Kāda programmēšanas valoda un rīki to ir izmantojuši? Ko jūs domājat par lietojumprogrammu izveidi, izmantojot Python un GTK 3?