Piton

Kako stvoriti jednostavnu aplikaciju u Pythonu i GTK3

Kako stvoriti jednostavnu aplikaciju u Pythonu i GTK3
Ovaj će vam članak objasniti kako stvoriti grafičku aplikaciju „Hello World“ u Linuxu pomoću programskog jezika Python 3 i GTK3 GUI okvira. Svi uzorci koda u vodiču testirani su s Pythonom 3.8.6 i GTK 3.24.23 na Ubuntu 20.10.

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-gi

Takođ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 gi
gi.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 gi
gi.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.

OpenTTD vs Simutrans
Stvaranje vlastite simulacije prijevoza može biti zabavno, opuštajuće i izuzetno primamljivo. Zbog toga morate isprobati što više igara kako biste pro...
Vodič za OpenTTD
OpenTTD je jedna od najpopularnijih igara za poslovnu simulaciju. U ovoj igri morate stvoriti prekrasan prijevoznički posao. Međutim, počet ćete u poč...
SuperTuxKart za Linux
SuperTuxKart sjajan je naslov osmišljen kako bi vam besplatno pružio iskustvo Mario Kart na vašem Linux sustavu. Prilično je izazovno i zabavno igrati...