Die Erstellung grafischer Benutzeroberflächen (GUI) ist eine fantastische Methode, um Ihre Ideen zu verwirklichen und Ihre Programme benutzerfreundlicher zu machen.
PyGObject ist eine Python-Bibliothek, die Entwicklern ermöglicht, GUI-Anwendungen auf Linux-Desktop-Systemen mit dem GTK-(GIMP Toolkit)-Framework zu erstellen. GTK ist in Linux-Umgebungen weit verbreitet und treibt viele populäre Desktopanwendungen wie Gedit, GNOME Terminal und mehr.
In diesem Artikel werden wir erkunden, wie man mit PyGObject unter einer Linux-Desktopumgebung GUI-Anwendungen erstellen kann. Wir beginnen mit dem Verständnis, was PyGObject ist, wie Sie es installieren und dann bauen wir eine einfache GUI-Anwendung weiter.
Schritt 1: Installieren von Python und GTK unter Linux
Um mit PyGObject zu arbeiten, müssen Sie Python installiert haben und die meisten heutigen Linux-Distributionen come mit Python vorinstalliert, aber Sie können das durch Ausführen der folgenden angemessenen Befehle für Ihre spezifische Linux-Distribution überprüfen:
python3 --version Python 3.12.3
Wenn Python nicht installiert ist, können Sie es mit dem folgenden Befehl installieren:
sudo apt install python3 [On Debian, Ubuntu and Mint] sudo dnf install python3 [On RHEL/CentOS/Fedora and Rocky/AlmaLinux] sudo apk add python3 [On Alpine Linux] sudo pacman -S python [On Arch Linux] sudo zypper install python3 [On OpenSUSE]
Nun müssen Sie die PyGObject-Schnittstellen für Python installieren, sowie die GTK-Entwicklungsbibliotheken.
sudo apt install python3-gi gir1.2-gtk-3.0 [On Debian, Ubuntu and Mint] sudo dnf install python3-gobject gtk3 [On RHEL/CentOS/Fedora and Rocky/AlmaLinux] sudo apk add py3-gobject gtk+3 [On Alpine Linux] sudo pacman -S python-gobject gtk3 [On Arch Linux] sudo zypper install python3-gobject gtk3 [On OpenSUSE]
Schritt 2: Installieren von PyGObject in Linux
Sobald Python und die GTK-Entwicklungslibaries installiert sind, können Sie PyGObject mit dem untenstehenden angemessenen Befehl für Ihre bestimmte Linux-Distribution installieren.
sudo apt install python3-gi [On Debian, Ubuntu and Mint] sudo dnf install pygobject3 [On RHEL/CentOS/Fedora and Rocky/AlmaLinux] sudo apk add py3-gobject [On Alpine Linux] sudo pacman -S python-gobject [On Arch Linux] sudo zypper install python3-gobject [On OpenSUSE]
Nach der Installation sind Sie bereit, um GUI-Anwendungen mit PyGObject und GTK zu entwickeln.
Erstellen des ersten PyGObject-GUI-Anwendungen in Linux
Nun werden wir eine einfache PyGObject-Anwendung erstellen, die ein Fenster mit einem Knopf anzeigt. Wenn der Knopf angeklickt wird, wird eine Nachricht angezeigt, die sagt, „Hallo, Welt!„.
Erstellen Sie ein Python-Datei namens app.py
, und beginnen wir mit dem Schreiben der grundlegenden Struktur unserer PyGObject-Anwendung.
import gi gi.require_version("Gtk", "3.0") from gi.repository import Gtk class MyApp(Gtk.Window): def __init__(self): Gtk.Window.__init__(self, title="Hello World App") self.set_size_request(300, 100) # Creating a button and adding it to the window button = Gtk.Button(label="Click Me") button.connect("clicked", self.on_button_clicked) self.add(button) def on_button_clicked(self, widget): print("Hello, World!") # Initialize the application app = MyApp() app.connect("destroy", Gtk.main_quit) # Close the app when window is closed app.show_all() Gtk.main()
Erklärung des Codes:
- Die ersten beiden Zeilen importieren die notwendigen PyGObject-Module. Wir legen die GTK-Version fest, die wir verwenden möchten (
3.0
in diesem Fall). - Die Klasse
MyApp
erbt vonGtk.Window
, die das Hauptfenster der Anwendung repräsentiert. - Wir erstellen einen Knopf mit
Gtk.Button
und setzen die Etikett des Knopfes auf „Klicke mich„. Wir verbinden auch den Knopf-Ereignis „clicked“ mit demon_button_clicked
-Methode, die „Hallo, Welt!“ ausgibt, wenn geklickt. - Der Hauptschleife der Anwendung wird durch Aufruf von
Gtk.main()
gestartet. Diese Schleife wartet auf Ereignisse (wie Klicks) und aktualisiert die Anwendung entsprechend.
Um die Anwendung auszuführen, gehe zu dem Verzeichnis, wo du die app.py
Datei gespeichert hast, und führe den folgenden Befehl aus:
python3 app.py
Ein Fenster mit einem Button namens „Klicke mich“ erscheint. Wenn du auf den Button klickst, wird „Hallo, Welt!“ im Terminal ausgegeben.

Mehr Funktionen zu deiner PyGObject-Anwendung hinzufügen
Lass uns nun unsere Anwendung erweitern, indem wir weitere Widgets und Interaktivität hinzufügen.
1. Ein Label hinzufügen
Wir können unsere Anwendung vergrößern, indem wir ein Gtk.Label
hinzufügen, um Nachrichten im Fenster anzuzeigen, anstatt sie im Terminal auszugeben.
import gi gi.require_version("Gtk", "3.0") from gi.repository import Gtk class MyApp(Gtk.Window): def __init__(self): Gtk.Window.__init__(self, title="Enhanced GUI App") self.set_size_request(400, 200) # Create a vertical box layout vbox = Gtk.Box(orientation=Gtk.Orientation.VERTICAL, spacing=10) self.add(vbox) # Create a label self.label = Gtk.Label(label="Press the button to see a message") vbox.pack_start(self.label, True, True, 0) # Create a button button = Gtk.Button(label="Click Me") button.connect("clicked", self.on_button_clicked) vbox.pack_start(button, True, True, 0) def on_button_clicked(self, widget): self.label.set_text("Hello, World!") # Initialize the application app = MyApp() app.connect("destroy", Gtk.main_quit) app.show_all() Gtk.main()
Erklärung der Änderungen:
- Wir verwendeten
Gtk.Box
, um Widgets vertikal zu organisieren, was hilft, das Label und den Knopf nacheinander anzuordnen. - Das
Gtk.Label
-Widget wird hinzugefügt, um eine Nachricht innerhalb des Fensters anzuzeigen. - Statt die Ausgabe ins Terminal, aktualisiert die Funktion
on_button_clicked
nun den Text des Labels.

2. Eingabefelder für Benutzereingaben hinzufügen
Nächstes, füge Gtk.Entry
-Widgets hinzu, um Benutzereingaben zu erlauben, was uns dazu bringen wird, eine einfache Anwendung zu erstellen, in der Benutzer ihr Name eingeben und einen Knopf klicken können, um ein personalisiertes Grüßchen anzuzeigen.
import gi gi.require_version("Gtk", "3.0") from gi.repository import Gtk class MyApp(Gtk.Window): def __init__(self): Gtk.Window.__init__(self, title="User Input App") self.set_size_request(400, 200) # Create a vertical box layout vbox = Gtk.Box(orientation=Gtk.Orientation.VERTICAL, spacing=10) self.add(vbox) # Create an Entry widget for user input self.entry = Gtk.Entry() self.entry.set_placeholder_text("Enter your name") vbox.pack_start(self.entry, True, True, 0) # Create a button button = Gtk.Button(label="Submit") button.connect("clicked", self.on_button_clicked) vbox.pack_start(button, True, True, 0) # Create a label to display the greeting self.label = Gtk.Label(label="") vbox.pack_start(self.label, True, True, 0) def on_button_clicked(self, widget): name = self.entry.get_text() if name: self.label.set_text(f"Hello, {name}!") else: self.label.set_text("Please enter your name.") # Initialize the application app = MyApp() app.connect("destroy", Gtk.main_quit) app.show_all() Gtk.main()
Erklärung des Codes:
- Das
Gtk.Entry
ist ein Eingabefeld, in dem Benutzer ihren Namen eingeben können. - Die Methode
set_placeholder_text
zeigt einen Hinweis innerhalb des Eingabefelds an, bis der Benutzer etwas eingibt. - Nach dem Klicken des Buttons wird der eingegebene Name mit `get_text()` abgerufen und im Label als personalisierte Begrüßung angezeigt.

3. Styling Ihrer Anwendung mit CSS
Mit PyGObject können Sie benutzerdefinierte Stile auf Ihren Anwendungs-Widgets anwenden, indem Sie ein CSS-Datei verwenden, die `style.css` heißt.
window { background-color: #f0f0f0; } button { background-color: #4CAF50; color: white; border-radius: 5px; padding: 10px; } label { font-size: 16px; color: #333; }
Nun ändern Sie den Python-Code, um diese CSS-Datei zu laden und anzuwenden:
import gi gi.require_version("Gtk", "3.0") from gi.repository import Gtk, Gdk class MyApp(Gtk.Window): def __init__(self): Gtk.Window.__init__(self, title="Styled GUI App") self.set_size_request(400, 200) # Load CSS css_provider = Gtk.CssProvider() css_provider.load_from_path("style.css") screen = Gdk.Screen.get_default() style_context = Gtk.StyleContext() style_context.add_provider_for_screen(screen, css_provider, Gtk.STYLE_PROVIDER_PRIORITY_USER) # Create a vertical box layout vbox = Gtk.Box(orientation=Gtk.Orientation.VERTICAL, spacing=10) self.add(vbox) # Create an Entry widget for user input self.entry = Gtk.Entry() self.entry.set_placeholder_text("Enter your name") vbox.pack_start(self.entry, True, True, 0) # Create a button button = Gtk.Button(label="Submit") button.connect("clicked", self.on_button_clicked) vbox.pack_start(button, True, True, 0) # Create a label to display the greeting self.label = Gtk.Label(label="") vbox.pack_start(self.label, True, True, 0) def on_button_clicked(self, widget): name = self.entry.get_text() if name: self.label.set_text(f"Hello, {name}!") else: self.label.set_text("Please enter your name.") # Initialize the application app = MyApp() app.connect("destroy", Gtk.main_quit) app.show_all() Gtk.main()
Erklärung der CSS-Änderungen:
- Der Button hat einen grünen Hintergrund und die Labels haben eine benutzerdefinierte Schriftgröße und -farbe.
- Die Kanten des Buttons sind abgerundet, um ein moderneres Aussehen zu erhalten.

Fazit
PyGObject ist ein kraftvolles Werkzeug für die Erstellung von grafischen Benutzeroberflächen auf dem Linux-Desktop mittels Python. Durch die Nutzung der Flexibilität und der Einfachheit von Python sowie den reichen Features von GTK können Entwickler funktionsreiche und optisch ansprechende Anwendungen schaffen.
In diesem Leitfaden haben wir die Grundlagen der Setup von PyGObject, die Erstellung einer einfachen Fenster, den Umgang mit Button-Klicks, die Hinzufügung von Benutzereingaben und sogar das Anwenden von benutzerdefinierten CSS-Stilen abgedeckt.
Sie können diese Beispiele erweitern, um komplexere Anwendungen zu bauen, wie z.B. Dateimanager, Medienwiedergabelisten oder sogar professionelle Software. Mit PyGObject und GTK sind die Möglichkeiten zur Erstellung von Desktopanwendungen fast unbegrenzt!
Source:
https://www.tecmint.com/pygobject-create-python-gui-application-linux/