Python

Hoe maak je een eenvoudige applicatie in Python en GTK3

Hoe maak je een eenvoudige applicatie in Python en GTK3
In dit artikel wordt uitgelegd hoe u een grafische "Hello World" -toepassing in Linux maakt met behulp van de programmeertaal Python 3 en het GTK3 GUI-framework. Alle codevoorbeelden in de tutorial zijn getest met Python 3.8.6 en GTK 3.24.23 op Ubuntu 20.10.

Noodzakelijke pakketten installeren

Om een ​​app te maken met Python 3 en GTK3, moet je Python-bindingen voor GObject-bibliotheken installeren. Dit kan worden gedaan door het PyGObject-pakket te installeren dat is opgenomen in repositories van bijna alle grote Linux-distributies. Om deze afhankelijkheden in Ubuntu te installeren, kunt u de onderstaande opdracht gebruiken:

$ sudo apt install python3 python3-gi

U kunt PyGObject ook compileren vanuit de hier beschikbare broncode.

Volledige code van de Hello World-applicatie

Het volledige codevoorbeeld van een Hello World-toepassing geschreven in Python 3 en GTK3 vindt u hieronder:. Deze applicatie stuurt een "Hello World !!” melding op het bureaublad met een klik op de knop.

import gi
gi.required_version("Gtk", "3.0")
gi.required_version('Melden', '0.7')
van gi.repository import Gtk
van gi.repository importeren Melden
klasse MyWindow(Gtk.Venster):
def __init__(zelf):
Gtk.Venster.__init__(zelf, titel = "Hallo wereld")
Gtk.Venster.set_default_size (zelf, 640, 480)
Informeer.init ("Eenvoudige GTK3-toepassing")
zelf.doos = Gtk.Vak (afstand = 6)
zelf.toevoegen (zelf.doos)
zelf.knop = Gtk.Knop (label = "Klik hier")
zelf.knop.set_halign(Gtk.uitlijnen.CENTRUM)
zelf.knop.set_valign(Gtk.uitlijnen.CENTRUM)
zelf.knop.connect("klikte", zelf.on_button_clicked)
zelf.doos.pack_start(zelf).knop, True, True, 0)
def on_button_clicked(zelf, widget):
n = Waarschuwen.Kennisgeving.new("Eenvoudige GTK3-toepassing", "Hallo wereld !!")
nee.tonen()
win = MijnVenster()
winnen.connect("vernietigen", Gtk.main_quit)
winnen.toon alles()
Gtk.hoofd()

Screenshot van het eindresultaat.

De bureaubladmelding die binnenkomt wanneer op de knop "Klik hier" wordt geklikt:

Stapsgewijze uitleg

Verschillende "import" -instructies in de eerste paar regels van de code importeren noodzakelijke modules die nodig zijn om de applicatie te laten werken. Deze modules tonen talrijke klassen en functies die binnen de toepassing kunnen worden gebruikt. “Gi.Vereiste_versie”-instructies zorgen ervoor dat alleen de vereiste versie van de bibliotheek wordt geïmporteerd om compatibiliteitsproblemen en crashes te voorkomen. In dit geval “3.0” wordt gebruikt om ervoor te zorgen dat de GTK3-bibliotheek in de toepassing wordt gebruikt en niet GTK2 of een andere versie van GTK.

Net als bij de GTK-klasse, wordt de Notify-klasse ook geïmporteerd door de vereiste versie op te geven (0.7 is die laatste versie op het moment van schrijven van dit artikel). Deze klasse wordt later in de toepassing gebruikt.

import gi
gi.required_version("Gtk", "3.0")
gi.required_version('Melden', '0.7')
van gi.repository import Gtk
van gi.repository importeren Melden

De volgende instructie subklassen “Gtk.Window” klasse als “MyWindow” klasse. De "Gtk.Venster.__init__”-methode initialiseert de constructor van de superklasse (Gtk.Window) waaruit een subklasse (MyWindow) is gemaakt. In de constructor wordt de applicatietitel ook ingesteld als "Hallo wereld" met behulp van het argument "titel"title. De standaardgeometrie van het toepassingsvenster wordt ook ingesteld door de breedte en hoogte op te geven in de methode "set_default_size".

klasse MyWindow(Gtk.Venster):
def __init__(zelf):
Gtk.Venster.__init__(zelf, titel = "Hallo wereld")
Gtk.Venster.set_default_size (zelf, 640, 480)

Vervolgens wordt de "init" -methode van de Notify-klasse gebruikt om de "libnotify" -bibliotheek te initialiseren door een applicatietitel op te geven. Zonder initialisatie worden er geen meldingen verzonden en weergegeven op de Linux-desktop.

Informeer.init ("Eenvoudige GTK3-toepassing")

De "box"-instructie voegt een lege lay-outcontainer toe aan het hoofdvenster van het programma. Deze container is als een leeg canvas waar een willekeurig aantal widgets op kan worden geplaatst. "Spacing" verwijst naar de ruimte tussen widgets in de "pixel" -eenheden.

zelf.doos = Gtk.Vak (afstand = 6)
zelf.toevoegen (zelf.doos)

Een nieuwe knopwidget "Klik hier" wordt gemaakt met behulp van de "Gtk.Knop" methode. Het wordt vervolgens uitgelijnd op de horizontale en verticale middelpunten van de lay-out van de bovenliggende doos met behulp van de methoden "set_halign" en "set_valign". De knop is verbonden met het "klikte"-signaal, zodat telkens wanneer op de knop wordt gedrukt, de terugbelmethode "on_button_clicked" kan worden aangeroepen. Ten slotte wordt de knopwidget van links langs de horizontale as ingevoegd in de dooslay-out met behulp van de "box".pack_start" methode. Voor deze methode zijn vier argumenten nodig: het widgetobject dat moet worden toegevoegd, boolean voor het uitbreiden van de widget, boolean voor het vullen van de widget en opvulling tussen de toegevoegde en andere aangrenzende widgets.

zelf.knop = Gtk.Knop (label = "Klik hier")
zelf.knop.set_halign(Gtk.uitlijnen.CENTRUM)
zelf.knop.set_valign(Gtk.uitlijnen.CENTRUM)
zelf.knop.connect("klikte", zelf.on_button_clicked)
zelf.doos.pack_start(zelf).knop, True, True, 0)

De "on_button_click"-methode wordt aangeroepen wanneer de "Click Here"-knop wordt ingedrukt. Er wordt een nieuwe melding gemaakt met behulp van de "nieuwe" methode die de titel en inhoud van de melding als argumenten gebruikt. Deze melding wordt vervolgens weergegeven op het bureaublad met behulp van de "show"-methode. U kunt ook de "new"-instructie in de hoofdconstructor verplaatsen om te voorkomen dat de melding opnieuw wordt gemaakt wanneer op de knop wordt gedrukt.

def on_button_clicked(zelf, widget):
n = Waarschuwen.Kennisgeving.new("Eenvoudige GTK3-toepassing", "Hallo wereld !!")
nee.tonen()

De volgende paar uitspraken gaan over het maken, beheren en tonen van een nieuw toepassingsvenster. Er wordt een nieuwe instantie van de klasse "MyWindow" gemaakt en deze is verbonden met het "destroy"-signaal om ervoor te zorgen dat de toepassing correct wordt gesloten wanneer een gebruiker besluit de toepassing te sluiten door op de knop "x" te klikken. De methode "show_all" geeft het toepassingsvenster weer op uw Linux-bureaublad. Ten slotte wordt de hoofdtoepassingslus uitgevoerd die verantwoordelijk is voor het afhandelen van gebeurtenissen en signalen.

Conclusie

GTK3 en Qt zijn enkele van de meest populaire GUI-frameworks die worden gebruikt voor het maken van applicaties die native op Linux draaien. Met beide frameworks kun je hoofdlogica schrijven in C++- en Python-talen. Je kunt niet fout gaan door een van deze toolkits te kiezen voor je volgende Linux-toepassingsproject.

Open source-poorten van commerciële game-engines
Gratis, open source en platformonafhankelijke game-engine-recreaties kunnen worden gebruikt om zowel oude als enkele van de vrij recente gametitels te...
Beste opdrachtregelspellen voor Linux
De opdrachtregel is niet alleen je grootste bondgenoot bij het gebruik van Linux, hij kan ook de bron van entertainment zijn omdat je hem kunt gebruik...
Beste gamepad-toewijzingsapps voor Linux
Als je graag games op Linux speelt met een gamepad in plaats van een typisch toetsenbord- en muisinvoersysteem, zijn er enkele handige apps voor jou. ...