Installer nødvendige pakker
For å opprette en app med Python 3 og GTK3, må du installere Python-bindinger for GObject-biblioteker. Dette kan gjøres ved å installere PyGObject-pakken som er inkludert i arkiver for nesten alle større Linux-distribusjoner. For å installere disse avhengighetene i Ubuntu, kan du bruke kommandoen nedenfor:
$ sudo apt installere python3 python3-giDu kan også kompilere PyGObject fra kildekoden som er tilgjengelig her.
Fullstendig kode for Hello World-applikasjonen
Fullstendig kodeeksempel på en Hello World-applikasjon skrevet i Python 3 og GTK3 finner du nedenfor. Denne applikasjonen sender en “Hello World !!”Varsel til skrivebordet ved å klikke på en knapp.
import gigi.require_version ("Gtk", "3.0 ")
gi.require_version ('Varsle', '0.7 ')
fra gi.depot import Gtk
fra gi.depot import Varsle
klasse MyWindow (Gtk.Vindu):
def __init __ (selv):
Gtk.Vindu.__init __ (self, title = "Hello World")
Gtk.Vindu.set_default_size (selv, 640, 480)
Gi beskjed.init ("Enkel GTK3-applikasjon")
selv-.boks = Gtk.Boks (avstand = 6)
selv-.legg til (selvtill.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 ("klikket", selv.on_button_clicked)
selv-.eske.pack_start (selv.knapp, sann, sann, 0)
def on_button_clicked (selv, widget):
n = Varsle.Melding.ny ("Simple GTK3 Application", "Hello World !!")
n.vise fram()
vinn = MyWindow ()
vinne.koble til ("ødelegge", Gtk.main_quit)
vinne.Vis alt()
Gtk.hoved()
Skjermbilde av det endelige resultatet.
Skrivebordsvarselet som kommer når du klikker på "Klikk her" -knappen:
Trinnvis forklaring
Ulike “import” -uttalelser i de første linjene i koden importerer nødvendige moduler som kreves for at applikasjonen skal fungere. Disse modulene avslører mange klasser og funksjoner som kan brukes i applikasjonen. “Gi.statement_version ”uttalelser sørger for at bare den nødvendige versjonen av biblioteket importeres for å unngå kompatibilitetsproblemer og krasjer. I dette tilfellet “3.0 ”brukes for å sikre at GTK3-biblioteket brukes i applikasjonen og ikke GTK2 eller annen versjon av GTK.
I likhet med GTK-klassen importeres også Notify-klassen ved å spesifisere den nødvendige versjonen (0.7 er den siste versjonen da denne artikkelen ble skrevet). Denne klassen vil bli brukt senere i applikasjonen.
import gigi.require_version ("Gtk", "3.0 ")
gi.require_version ('Varsle', '0.7 ')
fra gi.depot import Gtk
fra gi.depot import Varsle
Neste uttalelse underklasser “Gtk.Window ”klasse som“ MyWindow ”klasse. "Gtk.Vindu.__init__ ”-metoden initialiserer konstruktøren til superklassen (Gtk.Window) som en underklasse (MyWindow) ble opprettet fra. I konstruktøren blir applikasjonstittelen også satt til "Hello World" ved hjelp av "title" -argumentet. Standardgeometrien til applikasjonsvinduet er også angitt ved å spesifisere bredde og høyde i "set_default_size" -metoden.
klasse MyWindow (Gtk.Vindu):def __init __ (selv):
Gtk.Vindu.__init __ (self, title = "Hello World")
Gtk.Vindu.set_default_size (selv, 640, 480)
Deretter brukes "init" -metoden i Notify-klassen til å initialisere "libnotify" -biblioteket ved å oppgi en applikasjonstittel. Uten initialisering sendes ikke varsler og vises på Linux-skrivebordet.
Gi beskjed.init ("Enkel GTK3-applikasjon")Uttrykket "boks" legger til en tom layoutbeholder i hovedprogramvinduet. Denne beholderen er som et tomt lerret hvor et hvilket som helst antall widgets kan settes på. "Avstand" refererer til mellomrommet mellom småprogram i "piksel" -enhetene.
selv-.boks = Gtk.Boks (avstand = 6)selv-.legg til (selvtill.eske)
En ny knapp-widget "Klikk her" opprettes ved hjelp av "Gtk.Button ”-metoden. Den blir deretter justert til horisontale og vertikale sentre i overordnet boksoppsett ved hjelp av "set_halign" og "set_valign" -metodene. Knappen er koblet til "klikket" -signalet, slik at tilbakeringingsmetoden "on_button_clicked" når du trykker på knappen, kan påkalles. Til slutt settes knappwidget inn fra venstre langs den horisontale aksen til boksoppsettet ved hjelp av "boksen.pack_start ”-metoden. Denne metoden tar fire argumenter: widgetobjektet som skal legges til, boolsk for å utvide widgeten, boolsk for å fylle widgeten, og polstring mellom de tillagte widgetene og.
selv-.knapp = Gtk.Knapp (label = "Klikk her")selv-.knapp.set_halign (Gtk.Tilpasse.SENTER)
selv-.knapp.set_valign (Gtk.Tilpasse.SENTER)
selv-.knapp.koble ("klikket", selv.on_button_clicked)
selv-.eske.pack_start (selv.knapp, sann, sann, 0)
Metoden “on_button_click” påkalles hver gang du trykker på “Klikk her” -knappen. Et nytt varsel opprettes ved hjelp av den “nye” metoden som tar varselets tittel og innhold som argumenter. Dette varselet 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 du trykker på knappen.
def on_button_clicked (selv, widget):n = Varsle.Melding.ny ("Simple GTK3 Application", "Hello World !!")
n.vise fram()
De neste uttalelsene handler om å opprette, administrere og vise et nytt applikasjonsvindu. En ny forekomst av "MyWindow" -klassen opprettes og den er koblet til "ødelegg" -signalet for å sikre at applikasjonen lukkes riktig når en bruker bestemmer seg for å avslutte applikasjonen ved å klikke på "x" -knappen. Metoden "show_all" 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ører naturlig 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øysettene for ditt neste Linux-applikasjonsprosjekt.