Hvordan lage en enkel applikasjon i Python og GTK3

Hvordan lage en enkel applikasjon i Python og GTK3
Denne artikkelen vil forklare hvordan du lager en grafisk "Hello World" -applikasjon i Linux ved hjelp av Python 3 -programmeringsspråk og GTK3 GUI -rammeverk. Alle kodeprøver i opplæringen testes med Python 3.8.6 og GTK 3.24.23 på Ubuntu 20.10.

Installer nødvendige pakker

For å lage en app som bruker Python 3 og GTK3, må du installere Python -bindinger for Gobject Libraries. Dette kan gjøres ved å installere Pygobject -pakken som er inkludert i depoter av nesten alle store Linux -distribusjoner. For å installere disse avhengighetene i Ubuntu, kan du bruke kommandoen nedenfor:

$ sudo apt install python3 python3-gi

Du kan også samle Pygobject fra kildekoden tilgjengelig her.

Full kode for Hello World -applikasjonen

Full kodeprøve av en Hello World -søknad skrevet i Python 3 og GTK3 finner du nedenfor nedenfor. Denne applikasjonen sender en “Hello World !!”Varsling til skrivebordet på klikk på en knapp.

Importer GI
gi.krever_versjon ("GTK", "3.0 ")
gi.krever_versjon ('varsle', '0.7 ')
fra Gi.depot import gtk
fra Gi.depotimportvarsel
Klasse MyWindow (GTK.Vindu):
def __init __ (selv):
Gtk.Vindu.__i seg selv,)
Gtk.Vindu.set_default_size (self, 640, 480)
Gi beskjed.init ("enkel GTK3 -applikasjon")
selv-.Boks = GTK.Boks (avstand = 6)
selv-.Legg til (selv.eske)
selv-.knapp = gtk.Knapp (label = "Klikk her")
selv-.knapp.set_halign (gtk.Tilpasse.SENTER)
selv-.knapp.set_valign (gtk.Tilpasse.SENTER)
selv-.knapp.koble til ("klikket", selv.on_button_clicked)
selv-.eske.pack_start (selv.knapp, sant, sant, 0)
def on_button_clicked (self, widget):
n = varsle.Melding.Ny ("Simple GTK3 Application", "Hello World !!")
n.forestilling()
Win = MyWindow ()
vinne.Connect ("Destroy", GTK.main_quit)
vinne.Vis alt()
Gtk.hoved()

Skjermbilde av det endelige resultatet.

Desktopvarslingen som kommer når "Klikk her" -knappen klikker:

Trinn-for-trinn-forklaring

Ulike "import" -uttalelser i de første linjene i kodeimporten nødvendige moduler som kreves for at applikasjonen skal fungere. Disse modulene utsetter mange klasser og funksjoner som kan brukes i applikasjonen. “Gi.KREV_VERSION ”-uttalelser Forsikre deg om at bare den nødvendige versjonen av biblioteket importeres for å unngå kompatibilitetsproblemer og krasjer. I dette tilfellet “3.0 ”brukes til å sikre at GTK3 -biblioteket brukes i applikasjonen og ikke GTK2 eller noen annen versjon av GTK.

I likhet med GTK -klassen importeres varslingsklassen også ved å spesifisere den nødvendige versjonen (0.7 er den siste versjonen i skrivende stund denne artikkelen). Denne klassen vil bli brukt senere i applikasjonen.

Importer GI
gi.krever_versjon ("GTK", "3.0 ")
gi.krever_versjon ('varsle', '0.7 ')
fra Gi.depot import gtk
fra Gi.depotimportvarsel

Neste uttalelse underklasser “GTK.Window "-klassen som" MyWindow "-klassen. “GTK.Vindu.__init__ ”-metode initialiserer konstruktøren av superklassen (GTK.Vindu) hvorfra en underklasse (MyWindow) ble opprettet. I konstruktøren er applikasjonstittelen også satt som "Hello World" ved å bruke "tittelen" -argumentet. Standard geometri av applikasjonsvinduet er også angitt ved å spesifisere bredde og høyde i metoden "set_default_size".

Klasse MyWindow (GTK.Vindu):
def __init __ (selv):
Gtk.Vindu.__i seg selv,)
Gtk.Vindu.set_default_size (self, 640, 480)

Neste, "init" -metode i varselklassen brukes til å initialisere "libnotify" -biblioteket ved å levere en applikasjonstittel. Uten initialisering vil ikke varsler blir sendt og vises på Linux -skrivebordet.

Gi beskjed.init ("enkel GTK3 -applikasjon")

"Boks" -uttalelsen legger til en tom layoutbeholder i hovedprogramvinduet. Denne beholderen er som et tomt lerret der et antall widgeter kan settes på. “Avstand” refererer til rommet mellom widgeter i “Pixel” -enhetene.

selv-.Boks = GTK.Boks (avstand = 6)
selv-.Legg til (selv.eske)

En ny knapp widget “Klikk her” opprettes ved hjelp av “GTK.Button ”-metode. Det er deretter på linje med horisontale og vertikale sentre for overordnede layout ved hjelp av "set_halign" og "set_valign" -metoder. Knappen er koblet til “Klikket” -signalet slik at når knappen trykker på, kan tilbakeringingsmetoden “ON_Button_Clicked” påberopes. Til slutt settes knappen widget inn fra venstre langs den horisontale aksen til boksen oppsettet ved hjelp av “Box.PACK_START ”-metode. Denne metoden tar fire argumenter: widgetobjektet som skal legges til, boolsk for å utvide widgeten, boolsk for å fylle widgeten, og polstring mellom tilsatte og andre tilstøtende widgeter.

selv-.knapp = gtk.Knapp (label = "Klikk her")
selv-.knapp.set_halign (gtk.Tilpasse.SENTER)
selv-.knapp.set_valign (gtk.Tilpasse.SENTER)
selv-.knapp.koble til ("klikket", selv.on_button_clicked)
selv-.eske.pack_start (selv.knapp, sant, sant, 0)

Metoden “On_Button_Click” påkalles når "Klikk her" -knappen trykkes. En ny varsel opprettes ved hjelp av den "nye" metoden som tar varslingstittel og innhold som argumenter. Denne varslingen vises deretter på skrivebordet ved hjelp av "show" -metoden. Du kan også flytte den "nye" uttalelsen i hovedkonstruktøren for å unngå å gjenskape varselet når knappen trykkes.

def on_button_clicked (self, widget):
n = varsle.Melding.Ny ("Simple GTK3 Application", "Hello World !!")
n.forestilling()

De neste uttalelsene handler om å opprette, administrere og vise et nytt applikasjonsvindu. En ny forekomst av "MyWindow" -klassen opprettes, og den er koblet til "Destroy" -signalet for å sikre at applikasjonen blir stengt ordentlig når en bruker bestemmer seg for å avslutte applikasjonen ved å klikke på "X" -knappen. “Show_all” -metoden viser applikasjonsvinduet på Linux -skrivebordet. Til slutt kjøres den viktigste applikasjonssløyfen som er ansvarlig for håndtering av hendelser og signaler.

Konklusjon

GTK3 og QT er noen av de mest populære GUI -rammene som brukes til å lage applikasjoner som kjøres innfødt på Linux. Begge disse rammene lar deg skrive hovedlogikk på C ++ og Python -språk. Du kan ikke gå galt ved å velge noen av disse verktøyettene til ditt neste Linux -applikasjonsprosjekt.