Instalirajte potrebne pakete
Da biste stvorili aplikaciju pomoću Python 3 i GTK3, morate instalirati Python vezove za GObject knjižnice. To se može učiniti instaliranjem paketa PyGObject koji je uključen u spremišta gotovo svih glavnih Linux distribucija. Da biste instalirali ove ovisnosti u Ubuntu, možete upotrijebiti naredbu u nastavku:
$ sudo apt instalirati python3 python3-giTakođer možete sastaviti PyGObject iz izvornog koda koji je ovdje dostupan.
Cjeloviti kod aplikacije Hello World
Cjelovit uzorak koda aplikacije Hello World napisane na Python 3 i GTK3 možete pronaći u nastavku. Ovaj program šalje “Hello World !!”Obavijest radnoj površini klikom na gumb.
uvoz gigi.require_version ("Gtk", "3.0 ")
gi.require_version ('Obavijesti', '0.7 ')
od gi.repozitorij uvoz Gtk
od gi.uvoz spremišta Obavijesti
klase MyWindow (Gtk.Prozor):
def __init __ (samo):
Gtk.Prozor.__init __ (self, title = "Pozdrav svijetu")
Gtk.Prozor.set_default_size (self, 640, 480)
Obavijestiti.init ("Jednostavna GTK3 aplikacija")
sebe.kutija = Gtk.Kutija (razmak = 6)
sebe.dodati (samo.kutija)
sebe.gumb = Gtk.Gumb (label = "Kliknite ovdje")
sebe.dugme.set_halign (Gtk.Uskladiti.CENTAR)
sebe.dugme.set_valign (Gtk.Uskladiti.CENTAR)
sebe.dugme.povezati ("kliknuo", samostalno.on_button_clicked)
sebe.kutija.pack_start (samo.gumb, True, True, 0)
def on_button_clicked (self, widget):
n = Obavijestiti.Obavijest.novo ("Jednostavna aplikacija GTK3", "Pozdrav svijetu !!")
n.pokazati()
win = MyWindow ()
pobijediti.povezati ("uništiti", Gtk.glavni_izlaz)
pobijediti.Pokaži sve()
Gtk.glavni()
Snimka zaslona konačnog rezultata.
Obavijest na radnoj površini koja stiže kad se klikne gumb "Kliknite ovdje":
Detaljno objašnjenje
Razni “import” izrazi u prvih nekoliko redaka koda uvoze potrebne module potrebne za rad aplikacije. Ovi moduli izlažu brojne klase i funkcije koje se mogu koristiti u aplikaciji. “Gi.require_version ”izjave osiguravaju da se uvozi samo potrebna verzija knjižnice kako bi se izbjegli problemi s kompatibilnošću i padovi. U ovom slučaju „3.0 ”koristi se kako bi se osiguralo da se u aplikaciji koristi biblioteka GTK3, a ne GTK2 ili bilo koja druga verzija GTK.
Slično klasi GTK, klasa Notify također se uvozi navođenjem potrebne verzije (0.7 je li najnovija verzija u vrijeme pisanja ovog članka). Ova klasa će se koristiti kasnije u aplikaciji.
uvoz gigi.require_version ("Gtk", "3.0 ")
gi.require_version ('Obavijesti', '0.7 ')
od gi.repozitorij uvoz Gtk
od gi.uvoz spremišta Obavijesti
Sljedeća podklasa izjava „Gtk.Prozor “klasa kao klasa„ MyWindow “. Zbirka „Gtk.Prozor.__init__ ”metoda inicijalizira konstruktor super klase (Gtk.Prozor) iz kojeg je stvoren podrazred (MyWindow). U konstruktoru je naslov aplikacije također postavljen kao "Hello World" pomoću argumenta "title". Zadana geometrija prozora aplikacije također se postavlja određivanjem širine i visine u metodi "set_default_size".
klase MyWindow (Gtk.Prozor):def __init __ (samo):
Gtk.Prozor.__init __ (self, title = "Pozdrav svijetu")
Gtk.Prozor.set_default_size (self, 640, 480)
Dalje, metoda „init“ klase Notify koristi se za inicijalizaciju knjižnice „libnotify“ davanjem naslova aplikacije. Bez inicijalizacije, obavijesti se neće slati i prikazivati na radnoj površini Linuxa.
Obavijestiti.init ("Jednostavna GTK3 aplikacija")Izjava "okvir" dodaje prazan spremnik izgleda u glavni prozor aplikacije. Ovaj je spremnik poput praznog platna na koje se može staviti bilo koji broj widgeta. "Razmak" se odnosi na razmak između dodataka u jedinicama "piksela".
sebe.kutija = Gtk.Kutija (razmak = 6)sebe.dodati (samo.kutija)
Novi widget gumba "Click Here" kreira se pomoću "Gtk.Button ”metoda. Zatim se poravnava s vodoravnim i okomitim središtima izgleda roditeljskog okvira pomoću metoda "set_halign" i "set_valign". Gumb je povezan na signal "kliknuo" tako da se svaki put kad se pritisne tipka može pozvati metoda povratnog poziva "on_button_clicked". Na kraju, widget gumba umetne se s lijeve strane vodoravne osi u raspored okvira pomoću "okvira.pack_start ”metoda. Ova metoda uzima četiri argumenta: dodani objekt widgeta, logičko za proširenje widgeta, logičko za popunjavanje widgeta i dodavanje između dodanih i ostalih susjednih widgeta.
sebe.gumb = Gtk.Gumb (label = "Kliknite ovdje")sebe.dugme.set_halign (Gtk.Uskladiti.CENTAR)
sebe.dugme.set_valign (Gtk.Uskladiti.CENTAR)
sebe.dugme.povezati ("kliknuo", samostalno.on_button_clicked)
sebe.kutija.pack_start (samo.gumb, True, True, 0)
Poziva se na metodu "on_button_click" kad god se pritisne gumb "Kliknite ovdje". Nova obavijest kreira se metodom "nova" koja uzima naslov i sadržaj obavijesti kao argumente. Ta se obavijest zatim prikazuje na radnoj površini metodom "pokaži". Također možete premjestiti izraz "new" u glavni konstruktor kako biste izbjegli ponovno stvaranje obavijesti kad god se pritisne gumb.
def on_button_clicked (self, widget):n = Obavijestiti.Obavijest.novo ("Jednostavna aplikacija GTK3", "Pozdrav svijetu !!")
n.pokazati()
Sljedećih nekoliko izjava govori o stvaranju, upravljanju i prikazivanju novog prozora aplikacije. Stvara se nova instanca klase "MyWindow" i ona je povezana za signal "uništi" kako bi se osiguralo da se aplikacija pravilno zatvara svaki put kada korisnik odluči napustiti aplikaciju klikom na gumb "x". Metoda "show_all" prikazuje prozor aplikacije na vašoj Linux radnoj površini. Na kraju, pokreće se glavna aplikacijska petlja odgovorna za rukovanje događajima i signalima.
Zaključak
GTK3 i Qt su neki od najpopularnijih GUI okvira koji se koriste za stvaranje aplikacija koje se izvorno izvode na Linuxu. Oba ova okvira omogućuju vam pisanje glavne logike na jezicima C ++ i Python. Ne možete pogriješiti odabirom bilo kojeg od ovih alata za vaš sljedeći projekt aplikacije za Linux.