Python

Sådan oprettes en simpel applikation i Python og GTK3

Sådan oprettes en simpel applikation i Python og GTK3
Denne artikel vil forklare, hvordan man opretter en grafisk “Hello World” -applikation i Linux ved hjælp af Python 3-programmeringssprog og GTK3 GUI-ramme. Alle kodeeksempler i vejledningen testes med Python 3.8.6 og GTK 3.24.23 på Ubuntu 20.10.

Installer nødvendige pakker

For at oprette en app ved hjælp af Python 3 og GTK3 skal du installere Python-bindinger til GObject-biblioteker. Dette kan gøres ved at installere PyGObject-pakken inkluderet i opbevaringssteder for næsten alle større Linux-distributioner. For at installere disse afhængigheder i Ubuntu kan du bruge kommandoen nedenfor:

$ sudo apt installere python3 python3-gi

Du kan også kompilere PyGObject fra kildekoden, der er tilgængelig her.

Fuld kode for Hello World-applikationen

Fuld kodeeksempel på en Hello World-applikation skrevet i Python 3 og GTK3 kan findes nedenfor. Denne applikation sender en “Hello World !!”Meddelelse til skrivebordet ved at klikke på en knap.

import gi
gi.require_version ("Gtk", "3.0 ")
gi.require_version ('Underret', '0.7 ')
fra gi.arkivimport Gtk
fra gi.repository import Underret
klasse MyWindow (Gtk.Vindue):
def __init __ (selv):
Gtk.Vindue.__init __ (selv, titel = "Hello World")
Gtk.Vindue.set_default_size (selv, 640, 480)
Underrette.init ("Simpel GTK3-applikation")
selv.kasse = Gtk.Boks (afstand = 6)
selv.tilføj (selv.boks)
selv.knap = Gtk.Knap (label = "Klik her")
selv.knap.set_halign (Gtk.Juster.CENTRUM)
selv.knap.set_valign (Gtk.Juster.CENTRUM)
selv.knap.forbinde ("klikket", selv.on_button_clicked)
selv.boks.pack_start (selv.knap, Sand, Sand, 0)
def on_button_clicked (selv, widget):
n = Underret.Notifikation.ny ("Simple GTK3 Application", "Hello World !!")
n.at vise()
vinde = MyWindow ()
vinde.forbinde ("ødelægge", Gtk.main_quit)
vinde.Vis alt()
Gtk.hoved ()

Skærmbillede af det endelige resultat.

Skrivebordsmeddelelsen, der kommer, når der klikkes på knappen "Klik her":

Trin for trin forklaring

Forskellige “import” udsagn i de første par linjer i koden importerer nødvendige moduler, der kræves for at applikationen kan fungere. Disse moduler udsætter adskillige klasser og funktioner, der kan bruges i applikationen. ”Gi.statement_version ”udsagn sikrer, at kun den påkrævede version af biblioteket importeres for at undgå kompatibilitetsproblemer og nedbrud. I dette tilfælde “3.0 ”bruges til at sikre, at GTK3-biblioteket bruges i applikationen og ikke GTK2 eller nogen anden version af GTK.

Svarende til GTK-klassen importeres også Notify-klassen ved at angive den krævede version (0.7 er den seneste version på tidspunktet for skrivningen af ​​denne artikel). Denne klasse vil blive brugt senere i applikationen.

import gi
gi.require_version ("Gtk", "3.0 ")
gi.require_version ('Underret', '0.7 ')
fra gi.arkivimport Gtk
fra gi.repository import Underret

Den næste erklæring underklasser “Gtk.Window ”klasse som“ MyWindow ”klasse. "Gtk.Vindue.__init__ ”-metoden initialiserer konstruktøren af ​​superklassen (Gtk.Vindue) hvorfra der blev oprettet en underklasse (MyWindow). I konstruktøren indstilles applikationens titel også som “Hello World” ved hjælp af argumentet “title”. Applikationsvinduets standardgeometri indstilles også ved at angive bredde og højde i "set_default_size" -metoden.

klasse MyWindow (Gtk.Vindue):
def __init __ (selv):
Gtk.Vindue.__init __ (selv, titel = "Hello World")
Gtk.Vindue.set_default_size (selv, 640, 480)

Derefter bruges "init" -metoden i Notify-klassen til at initialisere "libnotify" -biblioteket ved at levere en applikationstitel. Uden initialisering sendes meddelelser ikke og vises på Linux-skrivebordet.

Underrette.init ("Simpel GTK3-applikation")

"Box" -erklæringen tilføjer en tom layoutcontainer til programmets hovedvindue. Denne container er som et tomt lærred, hvor et hvilket som helst antal widgets kan sættes på. "Mellemrum" henviser til mellemrummet mellem widgets i "pixel" -enhederne.

selv.kasse = Gtk.Kasse (afstand = 6)
selv.tilføj (selv.boks)

En ny knap-widget "Klik her" oprettes ved hjælp af "Gtk.Button ”metode. Derefter justeres det til vandrette og lodrette centre i overordnet bokslayout ved hjælp af "set_halign" og "set_valign" -metoderne. Knappen er forbundet til “klikket” -signalet, så hver gang der trykkes på knappen, kan tilbagekaldsmetoden “on_button_clicked” påberåbes. Endelig indsættes knapwidget fra venstre langs den vandrette akse til bokslayoutet ved hjælp af “boksen.pack_start ”metode. Denne metode tager fire argumenter: widgetobjektet, der skal tilføjes, boolsk til udvidelse af widget, boolsk til udfyldning af widget og polstring mellem de tilføjede og andre tilstødende widgets.

selv.knap = Gtk.Knap (label = "Klik her")
selv.knap.set_halign (Gtk.Juster.CENTRUM)
selv.knap.set_valign (Gtk.Juster.CENTRUM)
selv.knap.forbinde ("klikket", selv.on_button_clicked)
selv.boks.pack_start (selv.knap, Sand, Sand, 0)

Metoden "on_button_click" påberåbes, når der trykkes på knappen "Klik her". En ny anmeldelse oprettes ved hjælp af den "nye" metode, der tager meddelelsestitel og indhold som argumenter. Denne meddelelse vises derefter på skrivebordet ved hjælp af "show" -metoden. Du kan også flytte den "nye" erklæring i hovedkonstruktøren for at undgå at genskabe meddelelsen, når der trykkes på knappen.

def on_button_clicked (selv, widget):
n = Underret.Notifikation.ny ("Simple GTK3 Application", "Hello World !!")
n.at vise()

De næste par udsagn handler om at oprette, administrere og vise et nyt applikationsvindue. En ny forekomst af "MyWindow" -klassen oprettes, og den er forbundet til "ødelæggelse" -signalet for at sikre, at applikationen lukkes ordentligt, når en bruger beslutter at afslutte applikationen ved at klikke på "x" -knappen. Metoden “show_all” viser applikationsvinduet på dit Linux-skrivebord. Endelig køres den primære applikationssløjfe, der er ansvarlig for håndtering af hændelser og signaler.

Konklusion

GTK3 og Qt er nogle af de mest populære GUI-rammer, der bruges til at oprette applikationer, der kører indbygget på Linux. Begge disse rammer giver dig mulighed for at skrive hovedlogik på C ++ og Python-sprog. Du kan ikke gå galt ved at vælge et af disse værktøjssæt til dit næste Linux-applikationsprojekt.

Gratis og open source-spilmotorer til udvikling af Linux-spil
Denne artikel dækker en liste over gratis og open source-spilmotorer, der kan bruges til at udvikle 2D- og 3D-spil på Linux. Der er mange sådanne spil...
Shadow of the Tomb Raider til Linux-vejledning
Shadow of the Tomb Raider er den tolvte tilføjelse til Tomb Raider-serien - en action-adventure-spilfranchise oprettet af Eidos Montreal. Spillet blev...
Sådan styrkes FPS i Linux?
FPS står for Billeder i sekundet. FPS's opgave er at måle billedhastigheden i videoafspilninger eller spiloptræden. I enkle ord betegnes antallet af u...