Python

So erstellen Sie eine einfache Anwendung in Python und GTK3

So erstellen Sie eine einfache Anwendung in Python und GTK3
In diesem Artikel wird erklärt, wie Sie eine grafische „Hello World“-Anwendung unter Linux mit der Programmiersprache Python 3 und dem GUI-Framework GTK3 erstellen. Alle Codebeispiele im Tutorial werden mit Python 3 getestet.8.6 und GTK 3.24.23 auf Ubuntu 20.10.

Erforderliche Pakete installieren

Um eine App mit Python 3 und GTK3 zu erstellen, müssen Sie Python-Bindungen für GObject-Bibliotheken installieren. Dies kann durch die Installation des PyGObject-Pakets erfolgen, das in Repositorys fast aller großen Linux-Distributionen enthalten ist. Um diese Abhängigkeiten in Ubuntu zu installieren, können Sie den folgenden Befehl verwenden:

$ sudo apt install python3 python3-gi

Sie können PyGObject auch aus dem hier verfügbaren Quellcode kompilieren.

Vollständiger Code der Hello World-Anwendung

Ein vollständiges Codebeispiel einer in Python 3 und GTK3 geschriebenen Hello World-Anwendung finden Sie unten. Diese Anwendung sendet ein "Hallo Welt" !!” Benachrichtigung an den Desktop auf Knopfdruck.

Importieren
gi.require_version("Gtk", "3.0")
gi.require_version('Benachrichtigen', '0.7')
von gi.Repository-Import Gtk
von gi.Repository-Import Benachrichtigen
Klasse MyWindow(Gtk.Fenster):
def __init__(selbst):
Gtk.Fenster.__init__(self, title="Hallo Welt")
Gtk.Fenster.set_default_size(self, 640, 480)
Benachrichtigen.init("Einfache GTK3-Anwendung")
selbst.box = Gtk.Kasten(Abstand=6)
selbst.hinzufügen(selbst.Box)
selbst.Taste = Gtk.Schaltfläche(label="Hier klicken")
selbst.Taste.set_halign(Gtk.Ausrichten.CENTER)
selbst.Taste.set_valign(Gtk.Ausrichten.CENTER)
selbst.Taste.connect("geklickt", selbst.on_button_clicked)
selbst.Box.pack_start(selbst.Schaltfläche, Wahr, Wahr, 0)
def on_button_clicked(selbst, Widget):
n = Benachrichtigen.Benachrichtigung.new("Einfache GTK3-Anwendung", "Hallo Welt !!")
nein.Show()
win = MeinFenster()
Sieg.connect("zerstören", Gtk.main_quit)
Sieg.zeige alles()
Gtk.Main()

Screenshot des Endergebnisses.

Die Desktop-Benachrichtigung, die beim Klicken auf die Schaltfläche „Hier klicken“ eingeht:

Schritt-für-Schritt-Erklärung

Verschiedene „Import“-Anweisungen in den ersten Zeilen des Codes importieren notwendige Module, die für die Funktion der Anwendung erforderlich sind. Diese Module stellen zahlreiche Klassen und Funktionen bereit, die innerhalb der Anwendung verwendet werden können. „Gi.require_version“-Anweisungen stellen sicher, dass nur die erforderliche Version der Bibliothek importiert wird, um Kompatibilitätsprobleme und Abstürze zu vermeiden. In diesem Fall „3“.0“ wird verwendet, um sicherzustellen, dass die GTK3-Bibliothek in der Anwendung verwendet wird und nicht GTK2 oder eine andere Version von GTK.

Ähnlich wie die GTK-Klasse wird auch die Notify-Klasse importiert, indem die erforderliche Version angegeben wird (0.7 ist die neueste Version zum Zeitpunkt des Schreibens dieses Artikels). Diese Klasse wird später in der Anwendung verwendet.

Importieren
gi.require_version("Gtk", "3.0")
gi.require_version('Benachrichtigen', '0.7')
von gi.Repository-Import Gtk
von gi.Repository-Import Benachrichtigen

Die nächste Anweisungsunterklasse „Gtk.Window“-Klasse als „MyWindow“-Klasse. Der „Gtk“.Fenster.__init__“-Methode initialisiert den Konstruktor der Superklasse (Gtk.Window), aus dem eine Unterklasse (MyWindow) erstellt wurde. Im Konstruktor wird der Anwendungstitel auch mit dem Argument „title“ auf „Hello World“ gesetzt. Die Standardgeometrie des Anwendungsfensters wird auch durch die Angabe von Breite und Höhe in der Methode „set_default_size“ festgelegt.

Klasse MyWindow(Gtk.Fenster):
def __init__(selbst):
Gtk.Fenster.__init__(self, title="Hallo Welt")
Gtk.Fenster.set_default_size(self, 640, 480)

Als nächstes wird die Methode "init" der Klasse Notify verwendet, um die Bibliothek "libnotify" durch Angeben eines Anwendungstitels zu initialisieren. Ohne Initialisierung werden keine Benachrichtigungen gesendet und auf dem Linux-Desktop angezeigt.

Benachrichtigen.init("Einfache GTK3-Anwendung")

Die Anweisung „box“ fügt dem Hauptanwendungsfenster einen leeren Layout-Container hinzu. Dieser Container ist wie eine leere Leinwand, auf der beliebig viele Widgets platziert werden können. „Abstand“ bezieht sich auf den Abstand zwischen Widgets in den „Pixel“-Einheiten.

selbst.box = Gtk.Kasten(Abstand=6)
selbst.hinzufügen (selbst.Box)

Ein neues Button-Widget „Hier klicken“ wird mit dem „Gtk.Button“-Methode. Es wird dann mit den Methoden „set_halign“ und „set_valign“ an den horizontalen und vertikalen Zentren des übergeordneten Box-Layouts ausgerichtet. Der Button ist mit dem „clicked“-Signal verbunden, sodass bei jedem Drücken des Buttons die Callback-Methode „on_button_clicked“ aufgerufen werden kann. Zuletzt wird das Schaltflächen-Widget von links entlang der horizontalen Achse in das Box-Layout mit der "Box" eingefügt.pack_start”-Methode. Diese Methode benötigt vier Argumente: das hinzuzufügende Widget-Objekt, Boolean zum Erweitern des Widgets, Boolean zum Füllen des Widgets und Auffüllen zwischen dem hinzugefügten und anderen angrenzenden Widgets.

selbst.Taste = Gtk.Schaltfläche(label="Hier klicken")
selbst.Taste.set_halign(Gtk.Ausrichten.CENTER)
selbst.Taste.set_valign(Gtk.Ausrichten.CENTER)
selbst.Taste.connect("geklickt", selbst.on_button_clicked)
selbst.Box.pack_start(selbst.Schaltfläche, Wahr, Wahr, 0)

Die Methode „on_button_click“ wird immer dann aufgerufen, wenn die Schaltfläche „Hier klicken“ gedrückt wird. Eine neue Benachrichtigung wird mit der Methode „new“ erstellt, die den Titel und Inhalt der Benachrichtigung als Argumente verwendet. Diese Benachrichtigung wird dann mit der Methode „show“ auf dem Desktop angezeigt. Sie können auch die „new“-Anweisung im Hauptkonstruktor verschieben, um zu vermeiden, dass die Benachrichtigung beim Drücken der Schaltfläche erneut erstellt wird.

def on_button_clicked(selbst, Widget):
n = Benachrichtigen.Benachrichtigung.new("Einfache GTK3-Anwendung", "Hallo Welt !!")
nein.Show()

In den nächsten Ausführungen geht es um das Erstellen, Verwalten und Anzeigen eines neuen Anwendungsfensters. Eine neue Instanz der Klasse „MyWindow“ wird erstellt und mit dem Signal „destroy“ verbunden, um sicherzustellen, dass die Anwendung ordnungsgemäß geschlossen wird, wenn ein Benutzer die Anwendung durch Klicken auf die Schaltfläche „x“ beendet. Die Methode „show_all“ zeigt das Anwendungsfenster auf Ihrem Linux-Desktop an. Schließlich wird die Hauptanwendungsschleife ausgeführt, die für die Behandlung von Ereignissen und Signalen verantwortlich ist.

Fazit

GTK3 und Qt sind einige der beliebtesten GUI-Frameworks, die zum Erstellen von Anwendungen verwendet werden, die nativ unter Linux ausgeführt werden. Mit beiden Frameworks können Sie die Hauptlogik in den Sprachen C++ und Python schreiben write. Sie können nichts falsch machen, wenn Sie eines dieser Toolkits für Ihr nächstes Linux-Anwendungsprojekt auswählen.

Nützliche Tools für Linux-Spieler
Wenn Sie gerne unter Linux spielen, haben Sie wahrscheinlich Apps und Dienstprogramme wie Wine, Lutris und OBS Studio verwendet, um das Spielerlebnis ...
HD-Remastered-Spiele für Linux, die noch nie zuvor eine Linux-Version hatten
Viele Spieleentwickler und -herausgeber entwickeln HD-Remaster alter Spiele, um die Lebensdauer des Franchise zu verlängern. Bitte Fans, die Kompatibi...
So verwenden Sie AutoKey zur Automatisierung von Linux-Spielen
AutoKey ist ein Desktop-Automatisierungsdienstprogramm für Linux und X11, programmiert in Python 3, GTK und Qt. Mithilfe der Skript- und MACRO-Funktio...