Python

Kako ustvariti preprosto aplikacijo v Pythonu in GTK3

Kako ustvariti preprosto aplikacijo v Pythonu in GTK3
Ta članek bo razložil, kako v Linuxu z uporabo programskega jezika Python 3 in ogrodja GTK3 GUI ustvariti grafično aplikacijo "Hello World". Vsi vzorci kode v vadnici so preizkušeni s Pythonom 3.8.6 in GTK 3.24.23 na Ubuntu 20.10.

Namestite potrebne pakete

Če želite ustvariti aplikacijo s pomočjo Python 3 in GTK3, morate namestiti Pythonove vezi za knjižnice GObject. To lahko storite z namestitvijo paketa PyGObject, ki je vključen v repozitoriji skoraj vseh večjih distribucij Linuxa. Za namestitev teh odvisnosti v Ubuntu lahko uporabite spodnji ukaz:

$ sudo apt namestite python3 python3-gi

PyGObject lahko sestavite tudi iz izvorne kode, ki je na voljo tukaj.

Celotna koda aplikacije Hello World

Celoten vzorec kode aplikacije Hello World, napisane v Python 3 in GTK3, najdete spodaj. Ta aplikacija pošlje “Hello World !!”Obvestilo na namizje s klikom na gumb.

uvoz gi
gi.require_version ("Gtk", "3.0 ")
gi.require_version ('Obvesti', '0.7 ')
iz gi.repozitorij uvoz Gtk
iz gi.repozitorij uvoz Obvesti
razred MyWindow (Gtk.Okno):
def __init __ (samo):
Gtk.Okno.__init __ (self, title = "Hello World")
Gtk.Okno.set_default_size (self, 640, 480)
Obvestiti.init ("Preprosta aplikacija GTK3")
sebe.polje = Gtk.Polje (razmik = 6)
sebe.dodaj (samo.škatla)
sebe.button = Gtk.Gumb (label = "Kliknite tukaj")
sebe.gumb.set_halign (Gtk.Poravnajte.CENTER)
sebe.gumb.set_valign (Gtk.Poravnajte.CENTER)
sebe.gumb.poveži ("kliknil", samo.on_button_clicked)
sebe.škatla.pack_start (self.gumb, True, True, 0)
def on_button_clicked (self, widget):
n = Obvesti.Obvestilo.novo ("Preprosta aplikacija GTK3", "Pozdravljeni, svet !!")
n.pokaži ()
win = MyWindow ()
zmaga.povezati ("uničiti", Gtk.main_quit)
zmaga.Pokaži vse()
Gtk.glavni ()

Posnetek zaslona končnega rezultata.

Obvestilo na namizju, ki se prikaže ob kliku na gumb »Kliknite tukaj«:

Razlaga po korakih

Različni stavki "uvoz" v prvih nekaj vrsticah kode uvažajo potrebne module, ki so potrebni za delovanje aplikacije. Ti moduli izpostavljajo številne razrede in funkcije, ki jih je mogoče uporabiti v aplikaciji. »Gi.Stavki require_version «zagotavljajo, da se uvozi samo zahtevana različica knjižnice, da se prepreči težave z združljivostjo in zrušitve. V tem primeru je „3.0 "se uporablja za zagotovitev, da se v aplikaciji uporablja knjižnica GTK3 in ne GTK2 ali katera koli druga različica GTK.

Podobno kot razred GTK se tudi razred Notify uvozi z določitvijo zahtevane različice (0.7 je zadnja različica v času pisanja tega članka). Ta razred bo uporabljen kasneje v aplikaciji.

uvoz gi
gi.require_version ("Gtk", "3.0 ")
gi.require_version ('Obvesti', '0.7 ')
iz gi.repozitorij uvoz Gtk
iz gi.repozitorij uvoz Obvesti

Naslednji podrazred izjave »Gtk.Okno «kot razred» MyWindow «. Naprava „Gtk.Okno.__init__ ”metoda inicializira konstruktor super razreda (Gtk.Okno), iz katerega je bil ustvarjen podrazred (MyWindow). V konstruktorju je naslov aplikacije nastavljen tudi kot "Hello World" z uporabo argumenta "title". Privzeta geometrija okna aplikacije se nastavi tudi z določitvijo širine in višine v metodi "set_default_size".

razred MyWindow (Gtk.Okno):
def __init __ (samo):
Gtk.Okno.__init __ (self, title = "Hello World")
Gtk.Okno.set_default_size (self, 640, 480)

Nato se metoda „init“ iz razreda Notify uporablja za inicializacijo knjižnice „libnotify“ z dobavo naslova aplikacije. Brez inicializacije obvestila ne bodo poslana in prikazana na namizju Linuxa.

Obvestiti.init ("Preprosta aplikacija GTK3")

Stavek "polje" doda prazen vsebnik postavitve v glavno okno aplikacije. Ta vsebnik je kot prazno platno, kamor lahko vstavite poljubno število pripomočkov. "Razmik" se nanaša na prostor med pripomočki v enotah "piksel".

sebe.polje = Gtk.Polje (razmik = 6)
sebe.dodaj (samo.škatla)

Nov pripomoček za gumb »Click Here« je ustvarjen s pomočjo »Gtk.Gumb «. Nato se poravna z vodoravnim in navpičnim središčem postavitve nadrejenega polja z uporabo metod "set_halign" in "set_valign". Gumb je povezan s signalom "kliknil", tako da se lahko ob vsakem pritisku na tipko prikliče metoda povratnega klica "on_button_clicked". Na koncu se pripomoček gumba vstavi od leve vzdolž vodoravne osi do postavitve polja s pomočjo polja.pack_start ”. Ta metoda zajema štiri argumente: objekt gradnika, ki ga je treba dodati, logično vrednost za razširitev gradnika, logično vrednost za polnjenje gradnika in oblazinjenje med dodanimi in drugimi sosednjimi gradniki.

sebe.button = Gtk.Gumb (label = "Kliknite tukaj")
sebe.gumb.set_halign (Gtk.Poravnajte.CENTER)
sebe.gumb.set_valign (Gtk.Poravnajte.CENTER)
sebe.gumb.poveži ("kliknil", samo.on_button_clicked)
sebe.škatla.pack_start (self.gumb, True, True, 0)

Metoda “on_button_click” se sproži vsakič, ko pritisnete gumb “Click Here”. Novo obvestilo se ustvari z uporabo metode „new“, ki kot argument vzame naslov in vsebino obvestila. To obvestilo se nato prikaže na namizju z uporabo metode "show". Stavek "novo" lahko premaknete tudi v glavni konstruktor, da se izognete ponovnemu ustvarjanju obvestila ob vsakem pritisku na gumb.

def on_button_clicked (self, widget):
n = Obvesti.Obvestilo.novo ("Preprosta aplikacija GTK3", "Pozdravljeni, svet !!")
n.pokaži ()

Naslednjih nekaj izjav govori o ustvarjanju, upravljanju in prikazovanju novega okna aplikacije. Ustvari se nov primerek razreda »MyWindow«, ki je povezan s signalom »uničenje«, da se zagotovi pravilno zapiranje aplikacije, kadar koli se uporabnik odloči, da bo s klikom na gumb »x« zapustil aplikacijo. Metoda “show_all” prikaže okno programa na namizju Linuxa. Nazadnje se zažene glavna aplikacijska zanka, odgovorna za obdelavo dogodkov in signalov.

Zaključek

GTK3 in Qt sta nekatera najbolj priljubljena ogrodja grafičnega uporabniškega vmesnika, ki se uporabljajo za ustvarjanje aplikacij, ki delujejo v Linuxu. Oba okvira omogočata pisanje glavne logike v jezikih C ++ in Python. Z naslednjim projektom aplikacije Linux ne boste mogli zgrešiti.

Kako prikazati števec FPS v igrah Linux
Linux gaming je dobil velik zagon, ko je Valve leta 2012 napovedal podporo Linuxu za odjemalca Steam in njihove igre. Od takrat se je veliko AAA in in...
Kako prenesti in igrati Sid Meier's Civilization VI v Linuxu
Uvod v igro Civilization 6 je sodoben pogled na klasični koncept, uveden v seriji iger Age of Empires. Ideja je bila dokaj preprosta; začeli bi v zelo...
Kako namestiti in igrati Doom v Linuxu
Uvod v Doom Serija Doom je nastala v devetdesetih letih po izidu prvotnega Dooma. Bil je takojšen hit in od takrat naprej je serija iger prejela števi...