Installera nödvändiga paket
För att skapa en app med Python 3 och GTK3 måste du installera Python-bindningar för GObject-bibliotek. Detta kan göras genom att installera PyGObject-paketet som ingår i förvar för nästan alla större Linux-distributioner. För att installera dessa beroenden i Ubuntu kan du använda kommandot nedan:
$ sudo apt installera python3 python3-giDu kan också sammanställa PyGObject från källkoden som finns här.
Fullständig kod för Hello World-ansökan
Fullständigt kodprov för en Hello World-applikation skriven i Python 3 och GTK3 finns nedan. Denna applikation skickar en “Hello World !!”Meddelande till skrivbordet genom att klicka på en knapp.
import gigi.require_version ("Gtk", "3.0 ")
gi.require_version ('Notify', '0.7 ')
från gi.förvar import Gtk
från gi.förvar import import Meddela
klass MyWindow (Gtk.Fönster):
def __init __ (själv):
Gtk.Fönster.__init __ (själv, titel = "Hello World")
Gtk.Fönster.set_default_size (själv, 640, 480)
Meddela.init ("Enkel GTK3-applikation")
själv.ruta = Gtk.Låda (avstånd = 6)
själv.lägg till (själv.låda)
själv.knapp = Gtk.Knapp (label = "Klicka här")
själv.knapp.set_halign (Gtk.Justera.CENTRUM)
själv.knapp.set_valign (Gtk.Justera.CENTRUM)
själv.knapp.anslut ("klickat", själv.on_button_clicked)
själv.låda.pack_start (själv.knapp, sant, sant, 0)
def on_button_clicked (själv, widget):
n = Meddela.Underrättelse.ny ("Enkel GTK3-applikation", "Hello World !!")
n.show()
vinna = MyWindow ()
vinna.anslut ("förstör", Gtk.main_quit)
vinna.visa allt()
Gtk.huvud ()
Skärmdump av slutresultatet.
Skrivbordsmeddelandet som kommer när "Klicka här" -knappen klickas:
Steg-för-steg-förklaring
Olika "import" -uttalanden i de första raderna i kodimporten nödvändiga moduler som krävs för att applikationen ska fungera. Dessa moduler exponerar många klasser och funktioner som kan användas i applikationen. ”Gi.uttalanden kräver_version garanterar att endast den version av biblioteket som krävs importeras för att undvika kompatibilitetsproblem och kraschar. I det här fallet “3.0 ”används för att se till att GTK3-biblioteket används i applikationen och inte GTK2 eller någon annan version av GTK.
På samma sätt som GTK-klassen importeras även Notify-klassen genom att ange dess version (0.7 är den senaste versionen när denna artikel skrivs). Denna klass kommer att användas senare i applikationen.
import gigi.require_version ("Gtk", "3.0 ")
gi.require_version ('Notify', '0.7 ')
från gi.förvar import Gtk
från gi.förvar import importera Meddela
Nästa uttalande underklasser “Gtk.Fönster "klass som" MyWindow "klass. ”Gtk.Fönster.__init__ ”-metoden initierar konstruktorn för superklassen (Gtk.Window) från vilket en underklass (MyWindow) skapades. I konstruktören är programmets titel också inställd som “Hello World” med argumentet “title”. Standardgeometrin i applikationsfönstret ställs också in genom att ange bredd och höjd i metoden "set_default_size".
klass MyWindow (Gtk.Fönster):def __init __ (själv):
Gtk.Fönster.__init __ (själv, titel = "Hello World")
Gtk.Fönster.set_default_size (själv, 640, 480)
Därefter används "init" -metoden i Notify-klassen för att initialisera "libnotify" -biblioteket genom att tillhandahålla en applikationstitel. Utan initialisering skickas inte meddelanden och visas på Linux-skrivbordet.
Meddela.init ("Enkel GTK3-applikation")Uttrycket "rutan" lägger till en tom layoutbehållare i programmets huvudfönster. Den här behållaren är som en tom duk där valfritt antal widgets kan sättas på. "Avstånd" avser utrymmet mellan widgetar i "pixel" -enheterna.
själv.ruta = Gtk.Låda (avstånd = 6)själv.lägg till (själv.låda)
En ny knappwidget "Klicka här" skapas med "Gtk.Knapp ”-metod. Den anpassas sedan till horisontella och vertikala centrum för moderboxens layout med metoderna "set_halign" och "set_valign". Knappen är ansluten till "klickad" -signalen så att återkallningsmetoden "on_button_clicked" kan anropas närhelst knappen trycks in. Slutligen sätts knappwidget in från vänster längs den horisontella axeln till rutan med rutan “.pack_start ”-metod. Den här metoden tar fyra argument: widgetobjektet som ska läggas till, booleskt för att utvidga widgeten, booleskt för att fylla widgeten och stoppning mellan de tillagda och andra intilliggande widgets.
själv.knapp = Gtk.Knapp (label = "Klicka här")själv.knapp.set_halign (Gtk.Justera.CENTRUM)
själv.knapp.set_valign (Gtk.Justera.CENTRUM)
själv.knapp.anslut ("klickat", själv.on_button_clicked)
själv.låda.pack_start (själv.knapp, sant, sant, 0)
Metoden "on_button_click" anropas närhelst du trycker på "Klicka här". En ny anmälan skapas med den ”nya” metoden som tar aviseringstitel och innehåll som argument. Detta meddelande visas sedan på skrivbordet med "show" -metoden. Du kan också flytta det "nya" uttalandet i huvudkonstruktören för att undvika att återskapa meddelandet när du trycker på knappen.
def on_button_clicked (själv, widget):n = Meddela.Underrättelse.ny ("Enkel GTK3-applikation", "Hello World !!")
n.show()
De kommande uttalandena handlar om att skapa, hantera och visa ett nytt applikationsfönster. En ny instans av "MyWindow" -klassen skapas och den är ansluten till "förstör" -signalen för att säkerställa att applikationen stängs ordentligt när en användare bestämmer sig för att avsluta applikationen genom att klicka på "x" -knappen. Metoden "show_all" visar applikationsfönstret på ditt Linux-skrivbord. Slutligen körs den huvudsakliga applikationsslingan som ansvarar för hantering av händelser och signaler.
Slutsats
GTK3 och Qt är några av de mest populära GUI-ramarna som används för att skapa applikationer som körs på Linux. Båda dessa ramar låter dig skriva huvudlogik på C ++ och Python-språk. Du kan inte gå fel genom att välja någon av dessa verktygssatser för ditt nästa Linux-applikationsprojekt.