Python

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 et grafisk “Hello World” -program i Linux ved hjelp av Python 3-programmeringsspråk og GTK3 GUI-rammeverk. Alle kodeeksempler i opplæringen er testet med Python 3.8.6 og GTK 3.24.23 på Ubuntu 20.10.

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

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

Topp 10 spill å spille på Ubuntu
Windows-plattformen har vært en av de dominerende plattformene for spill på grunn av den enorme andelen spill som utvikles i dag for å støtte Windows ...
5 beste arkadespill for Linux
I dag er datamaskiner seriøse maskiner som brukes til spill. Hvis du ikke kan få den nye høye poengsummen, vil du vite hva jeg mener. I dette innlegge...
Kamp for Wesnoth 1.1. 3.6 Utvikling utgitt
Kamp for Wesnoth 1.1. 3.6 utgitt i forrige måned, er den sjette utgivelsen i 1.1. 3.x-serien, og den leverer en rekke forbedringer, spesielt til bruke...