Pytonorm

Hur man skapar en enkel applikation i Python och GTK3

Hur man skapar en enkel applikation i Python och GTK3
Denna artikel kommer att förklara hur man skapar en grafisk “Hello World” -applikation i Linux med Python 3-programmeringsspråk och GTK3 GUI-ramverk. Alla kodprover i handledningen testas med Python 3.8.6 och GTK 3.24.23 på Ubuntu 20.10.

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

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

Mus Mus vänsterklicka på knappen fungerar inte på Windows 10
Mus vänsterklicka på knappen fungerar inte på Windows 10
Om du använder en dedikerad mus med din bärbara dator eller stationära dator men musens vänsterklick-knapp fungerar inte på Windows 10/8/7 av någon an...
Mus Markören hoppar eller rör sig slumpmässigt när du skriver in Windows 10
Markören hoppar eller rör sig slumpmässigt när du skriver in Windows 10
Om du upptäcker att muspekaren hoppar eller rör sig på egen hand, automatiskt, slumpmässigt när du skriver in Windows-bärbar dator eller dator, kan nå...
Mus Så här vänder du mus- och styrplattans rullningsriktning i Windows 10
Så här vänder du mus- och styrplattans rullningsriktning i Windows 10
Mus och Pekplattas gör inte bara datoranvändning lättare men effektivare och mindre tidskrävande. Vi kan inte föreställa oss ett liv utan dessa enhete...