Skapa ditt första grafiska användargränssnitt i Python med Glade och GTK+

Viktiga Slutsatser

  • Pythonutvecklare kan dra nytta av GTK+ och Glade för att konstruera intuitiva grafiska gränssnitt (GUI) med ett visuellt fokus.
  • Förberedelserna för detta exempel kräver att Python, GTK+, Glade och PyGObject installeras.
  • Att använda GTK+ och Glade i Python GUI-utveckling effektiviserar processen och separerar GUI-design från koden.

Python är ett tillgängligt språk som utmärker sig inom dataanalys och webbutveckling. Det är även ett ypperligt val för utveckling av GUI-applikationer. Med GTK+ och Glade kan man enkelt skapa plattformsoberoende applikationer.

GTK+ och Glade Interface Designer för Pythonutvecklare

GTK+ (GIMP Toolkit) i kombination med Glade Interface Designer erbjuder en kraftfull lösning för Pythonutvecklare som vill skapa intuitiva och engagerande användargränssnitt.

GTK+ är ett verktygspaket som möjliggör GUI-utveckling på flera plattformar. Det är kompatibelt med olika operativsystem såsom Linux, Windows och macOS.

Glade Interface Designer, som kompletterar GTK+, tillåter design av GUI utan att skriva layoutkod. Genom att använda WYSIWYG-gränssnittet kan man med få klick och drag-och-släpp skapa avancerade gränssnitt.

Konfigurera Pythonmiljön för GTK+ och Glade-utveckling

En korrekt konfigurerad miljö är avgörande för ett effektivt arbetsflöde.

1. Installera Python

Först, säkerställ att Python är installerat på datorn. Exemplen använder Python 3, eftersom det har bättre stöd och integrering med GTK+ och Glade. Vanligtvis är Python redan installerat på Linux och macOS.

För Windows kan Python laddas ner från den officiella webbplatsen för Python.

2. Installera GTK+

GTK+ kan installeras via en pakethanterare.

För Linux-system baserade på Ubuntu och Debian:

sudo apt-get install libgtk-3-dev

För Fedora och liknande:

sudo dnf install gtk3-devel

På macOS med Homebrew:

brew install gtk+3

Windowsanvändare kan ladda ner GTK+ från GTK:s officiella nedladdningssida. Med MSYS2 installerat, kan följande kommando användas i MSYS2-kommandotolken:

pacman -S mingw-w64-x86_64-python-gobject

3. Installera Glade

Glade kan installeras via kommandotolken.

För Linux-distributioner som Ubuntu och Debian:

sudo apt-get install glade

För Fedora:

sudo dnf install glade

För macOS med Homebrew:

brew install glade

Windowsanvändare kan installera med MSYS2 och följande kommando:

pacman -S mingw-w64-x86_64-glade

4. Pythonbindningar för GTK+

Installera PyGObject för att integrera GTK+ med Python. Använd kommandot:

pip install PyGObject

Om ett felmeddelande som ”Bygghjulet för pycairo (pyproject.toml) kördes inte” visas under installationen av PyGObject, behöver du också installera cairo-paketet.

För Ubuntu och Debian-baserade Linux-distributioner:

sudo apt-get install libcairo2-dev

För Fedora:

sudo yum install cairo-devel

På macOS:

brew install pygobject3

5. Konfigurera en virtuell miljö (valfritt)

Det rekommenderas starkt att använda virtuella miljöer för Python-projekt. Det isolerar projektets beroenden. För att skapa och aktivera en virtuell miljö på Linux, använd dessa kommandon i terminalen:

python -m venv myenv
source myenv/bin/activate

På Windows:

python -m venv myenv
myenv\Scripts\activate

För macOS, för att säkerställa att den virtuella miljön har tillgång till Homebrew-installerade paket, använd:

python -m venv --system-site-packages myenv
source myenv/bin/activate

6. Verifiera installationen

För att verifiera att GTK+ och Glade har installerats, skapa ett enkelt Python-skript som importerar GTK:

import gi
gi.require_version("Gtk", "3.0")
from gi.repository import Gtk
print("GTK+ version:", Gtk.get_major_version(), Gtk.get_minor_version())

Körning av skriptet kommer att visa den installerade GTK+-versionen. Om allt fungerar korrekt är utvecklingsmiljön redo.

Skapa en enkel GUI-app med Glade Interface Designer och Python

Designa GUI-applikationen i Glade Interface Designer och spara layouten som en projektfil. Denna projektfil kan sedan användas i Python-koden.

Designa GUI med Glade

Glades drag-och-släpp-gränssnitt underlättar fokuseringen på designen utan att fastna i underliggande kod. Starta Glade via systemets programmeny eller kommandotolken med:

glade

Glade-gränssnittet kommer nu att visas. Här kan du skapa layouten för ditt GUI.

Klicka på knappen för att skapa ett nytt projekt i övre vänstra hörnet. Detta skapar en tom arbetsyta för GUI-designen. Glade har ett stort urval av widgets som knappar, textfält och etiketter. Dessa kan dras till arbetsytan för att börja utforma gränssnittet. Storlek och placering av widgets kan justeras efter designbehov.

Börja med att välja GtkWindow-widgeten från Toplevels-menyn:

I den högra panelen i Glade, under fliken Allmänt, finns ett ID-alternativ. Detta ID är det unika namnet på den widget som lades till. För detta exempel, ge det tillagda GtkWindow ID:t ”myMainWindow”.

Nu kan widgets läggas till i huvudfönstret. Under Behållare i den övre menyn, välj GtkBox-widgeten och dra den till arbetsytan. Ge den ID:t ”myMainBox”.

Efter att GtkBox-widgeten har lagts till, visas olika alternativ till höger om arbetsytan som är specifika för den widgeten. Alla designändringar kan göras här utan att skriva någon kod.

Lägg till en kontrollwidget i designen. Under fliken Kontroll i den övre menyn, välj exempelvis GtkButton och dra den till GtkBox. Ge den ID:t ”myButton”. Om du vill kan texten på knappen ändras under fliken Allmänt i den högra panelen.

Eftersom GtkButton är en klickbar widget, kan en Pythonhanterare definieras för den och tillhörande kod kan skrivas senare. Gå till fliken Signaler i den högra menyn och lägg till en hanterare för den klickade signalen. Kalla den ”on_button_clicked” för detta exempel.

Spara GUI-designen som en projektfil. Spara filen som ”myDesign.glade”.

Använda Glade Design File i Python-kod

Skapa en fil vid namn ”app.py” i samma katalog som ”myDesign.glade”. Klistra in följande kod:

import gi
gi.require_version("Gtk", "3.0")
from gi.repository import Gtk
from gi.repository import Gdk

class MyApp:
    def __init__(self):

        self.builder = Gtk.Builder()
        self.builder.add_from_file("myDesign.glade")

        self.window = self.builder.get_object("myMainWindow")
        self.window.connect("destroy", Gtk.main_quit)

        self.button = self.builder.get_object("myButton")
        self.button.connect("clicked", self.on_button_clicked)

        self.color_toggle = False

    def on_button_clicked(self, widget):

        color = "#FF0000" if self.color_toggle else "#00FF00"
        self.window.modify_bg(Gtk.StateType.NORMAL, Gdk.color_parse(color))
        self.color_toggle = not self.color_toggle

    def run(self):
        self.window.show_all()
        Gtk.main()

if __name__ == "__main__":
    app = MyApp()
    app.run()

Denna kod ändrar bakgrundsfärgen varje gång knappen klickas. Observera anropen till ”self.builder.get_object()” som skickar in ID:n för de widgets som definierades i Glade.

Kör Python-skriptet med kommandot för att se resultatet:

python3 app.py

Fördelar med att använda GTK+ och Glade för Python GUI-utveckling

Att använda GTK+ och Glade för Python GUI-utveckling ger klara fördelar. Att utveckla ett GUI tar normalt sett tid och kräver mycket ansträngning. Glade Interface Designer effektiviserar denna process. Glade erbjuder också en mångfald av widgets, som alla är lika lätta att använda som knappen i exemplet.

En stor fördel med Glade är möjligheten att hålla GUI-designen åtskild från koden. Detta underlättar underhåll och uppdatering av gränssnittet. Metoden leder till renare och mer välorganiserad kod, vilket stämmer överens med moderna programmeringsprinciper.