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. Alle Codeproben im Tutorial werden mit Python 3 getestet.8.6 und GTK 3.24.23 auf Ubuntu 20.10.

Installieren Sie die erforderlichen Pakete

Um eine App mit Python 3 und GTK3 zu erstellen, müssen Sie Python -Bindungen für Gobjektbibliotheken installieren. Dies kann durch die Installation des Pygobject -Pakets in Repositories fast aller wichtigen Linux -Verteilungen erfolgen. Um diese Abhängigkeiten in Ubuntu zu installieren, können Sie den folgenden Befehl verwenden:

$ sudo apt installieren python3 python3-gi

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

Vollständiger Code der Hello World -Anwendung

Voller Code -Beispiel einer Hello World -Anwendung in Python 3 und GTK3 finden Sie unten. Diese Bewerbung sendet eine „Hello -Welt !!Benachrichtigung auf den Desktop auf Klicken auf eine Schaltfläche.

Import GI
gi.required_version ("gtk", "3.0 ")
gi.Required_version ('Benachrichtigung', '0.7 '))
von gi.Repository -Import GTK
von gi.Repository Import Benachrichtigung
Klasse MyWindow (GTK.Fenster):
def __init __ (selbst):
Gtk.Fenster.__init __ (Selbst,)
Gtk.Fenster.set_default_size (self, 640, 480)
Benachrichtigen.Init ("Einfache GTK3 -Anwendung")
selbst.Box = gtk.Box (Abstand = 6)
selbst.hinzufügen (Selbst.Kasten)
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 ("Clicked", Selbst.on_button_clicked)
selbst.Kasten.pack_start (self.Taste, true, true, 0)
Def on_button_clicked (self, widget):
n = benachrichtigen.Benachrichtigung.Neu ("einfache GTK3 -Anwendung", "Hallo Welt !!"))
N.zeigen()
win = MyWindow ()
gewinnen.verbinden ("Zerstören", GTK.main_quit)
gewinnen.zeige alles()
Gtk.hauptsächlich()

Screenshot des Endergebnisses.

Die Schaltfläche Desktop -Benachrichtigung, die eintrifft, wenn „HIER -Klicken“ eintrifft:

Schritt-für-Schritt-Erläuterung

Verschiedene „importieren“ Anweisungen in den ersten Zeilen des Code -Import -Importmodule, die für die Arbeit der Anwendung erforderlich sind. Diese Module enthüllen zahlreiche Klassen und Funktionen, die in der Anwendung verwendet werden können. „Gi.Anweisungen von Required_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 bei der GTK -Klasse wird die Benachrichtigungsklasse auch durch Angabe ihrer erforderlichen Version (0) importiert.7 ist diese neueste Version zum Zeitpunkt des Schreibens dieses Artikels). Diese Klasse wird später in der Anwendung verwendet.

Import GI
gi.required_version ("gtk", "3.0 ")
gi.Required_version ('Benachrichtigung', '0.7 '))
von gi.Repository -Import GTK
von gi.Repository Import Benachrichtigung

Die nächste Aussage Unterklassen “GTK.Fenster "Klasse als" MyWindow "-Klasse. Der „GTK.Fenster.__init__ ”-Methode initialisiert den Konstruktor der Superklasse (GTK.Fenster), aus dem eine Unterklasse (MyWindow) erstellt wurde. Im Konstruktor wird der Anwendungstitel auch als "Hello World" unter Verwendung des Arguments "Titel" festgelegt. Die Standardgeometrie des Anwendungsfensters wird ebenfalls gesetzt, indem die Breite und Höhe in der Methode "set_default_size" angegeben wird.

Klasse MyWindow (GTK.Fenster):
def __init __ (selbst):
Gtk.Fenster.__init __ (Selbst,)
Gtk.Fenster.set_default_size (self, 640, 480)

Als Nächst. Ohne Initialisierung werden Benachrichtigungen nicht auf dem Linux -Desktop gesendet und 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, in der eine beliebige Anzahl von Widgets angelegt werden kann. "Abstand" bezieht sich auf den Raum zwischen Widgets im "Pixel" -Initen.

selbst.Box = gtk.Box (Abstand = 6)
selbst.hinzufügen (Selbst.Kasten)

Ein neues Schaltflächen -Widget "Klicken Sie hier" wird mit dem "GTK" erstellt.Taste ”Methode. Es ist dann mit den Methoden "set_halign" und "set_valign" auf horizontale und vertikale Zentren des übergeordneten Box -Layouts ausgerichtet. Die Taste ist mit dem Signal "Klickte" angeschlossen, sodass bei Drücken der Taste die Rückrufmethode "on_button_clicked" aufgerufen werden kann. Zuletzt wird das Tasten -Widget von links entlang der horizontalen Achse zum Box -Layout mit dem Box eingefügt.pack_start ”Methode. Diese Methode nimmt vier Argumente an: das Widget -Objekt, das hinzugefügt werden soll, boolean zur Erweiterung des Widgets, zum Füllen des Widgets und der Polsterung zwischen den hinzugefügten und anderen benachbarten 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 ("Clicked", Selbst.on_button_clicked)
selbst.Kasten.pack_start (self.Taste, true, true, 0)

Die Methode "on_button_click" wird aufgerufen, wenn die Schaltfläche "Hier klicken" gedrückt wird. Eine neue Benachrichtigung wird mit der „neuen“ Methode erstellt, die den Benachrichtigungsmeldung und den Inhalt als Argumente nimmt. Diese Benachrichtigung wird dann auf dem Desktop mit der "Show" -Methode angezeigt. Sie können auch die „neue“ Aussage im Hauptkonstruktor verschieben, um zu vermeiden, dass die Benachrichtigung nach dem Drücken der Taste nachgebaut wird.

Def on_button_clicked (self, widget):
n = benachrichtigen.Benachrichtigung.Neu ("einfache GTK3 -Anwendung", "Hallo Welt !!"))
N.zeigen()

In den nächsten Aussagen geht es darum, ein neues Anwendungsfenster zu erstellen, zu verwalten und anzuzeigen. Es wird eine neue Instanz der „MyWindow“ -Klasse erstellt und mit dem Signal „Zerstören“ verbunden, um sicherzustellen, dass die Anwendung ordnungsgemäß geschlossen wird, wenn ein Benutzer beschließt, die Anwendung zu beenden. Die Methode "show_all" zeigt das Anwendungsfenster auf Ihrem Linux -Desktop an. Schließlich wird die für die Bearbeitung von Ereignissen und Signalen verantwortliche Anwendungsschleife ausgeführt.

Abschluss

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