Opret din første GUI i Python med Glade og GTK+

Nøgle takeaways

  • Python-udviklere kan bruge GTK+ og Glade til at skabe intuitive GUI’er ved hjælp af en visuel grænseflade.
  • Opsætning af miljøet til dette eksempel involverer installation af Python, GTK+, Glade og PyGObject.
  • Brug af GTK+ og Glade til Python GUI-udvikling fremskynder processen og adskiller GUI-design fra kode.

Python er et tilgængeligt sprog, der er perfekt til dataanalyse og webudvikling. Men det er også et godt valg til udvikling af GUI-apps. GTK+ og Glade forenkler processen med at skabe simple cross-platform apps.

GTK+ og Glade Interface Designer til Python-udviklere

GTK+ (GIMP Toolkit) og Glade Interface Designer er en fantastisk kombination for Python-udviklere, der ønsker at skabe intuitive og behagelige grafiske brugergrænseflader.

GTK+ er et multiplatform-værktøjssæt, som du kan bruge til GUI-udvikling. Den er kompatibel med en række forskellige operativsystemer, herunder Linux, Windows og macOS.

Glade Interface Designer, et ledsagende værktøj til GTK+, lader dig designe GUI’er uden at skulle skrive layoutkode. Du kan bruge den til at oprette en GUI i et WYSIWYG-miljø med et par klik og enkle træk-og-slip-funktioner.

Opsætning af dit Python-miljø til GTK+ og Glade-udvikling

Opsætning af dit miljø er et kritisk første skridt for at sikre en jævn og effektiv arbejdsgang.

1. Installer Python

Start med at sikre dig, at du har Python installeret på dit system. Du vil se Python 3-kode i de eksempler, du læser, da det giver bedre support og integration til GTK+ og Glade. Til Linux og macOS er Python normalt forudinstalleret.

  Sådan tilmelder du dig et bibliotekskort hjemmefra

Windows-brugere kan downloade Python fra det officielle Python-websted.

2. Installer GTK+

Du kan installere GTK+ ved hjælp af en pakkehåndtering.

Til Ubuntu- og Debian-baserede Linux-systemer skal du bruge:

 sudo apt-get install libgtk-3-dev 

For Fedora og lignende:

 sudo dnf install gtk3-devel 

På macOS, ved hjælp af Homebrew:

 brew install gtk+3 

Windows-brugere kan downloade GTK+ fra GTKs officielle downloadside. Men hvis du har MSYS2 installeret, kan du åbne MSYS2-kommandolinjen og bruge denne kommando:

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

3. Installer Glade

Du kan bruge kommandolinjen til at installere Glade.

For Ubuntu og Debian-baserede Linux-distributioner:

 sudo apt-get install glade 

Om Fedora:

 sudo dnf install glade 

macOS-brugere kan bruge Homebrew:

 brew install glade 

Windows-brugere kan bruge følgende kommando med MSYS2:

 pacman -S mingw-w64-x86_64-glade 

4. Python-bindinger til GTK+

Installer PyGObject for at integrere GTK+ med Python. Kommandoen du vil bruge til dette er:

 pip install PyGObject 

Hvis der er en fejl som “Byggehjul til pycairo (pyproject.toml) kørte ikke” under PyGObject-installationen, skal du også installere cairo-pakken.

For Ubuntu og Debian-baserede Linux-distributioner:

 sudo apt-get install libcairo2-dev 

For Fedora:

 sudo yum install cairo-devel 

På macOS:

 brew install pygobject3 

5. Opsætning af et virtuelt miljø (valgfrit)

Det er god praksis at bruge et virtuelt miljø til dine Python-projekter. Dette isolerer dine projektafhængigheder. Opret og aktiver et virtuelt miljø på Linux med disse terminalkommandoer:

 python -m venv myenv
source myenv/bin/activate

På Windows brug:

 python -m venv myenv
myenv\Scripts\activate

På macOS, for at sikre, at det virtuelle miljø kan få adgang til de pakker, der installerer brew, skal du bruge:

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

6. Bekræftelse af installationen

For at bekræfte, at GTK+ og Glade er installeret, skal du oprette et simpelt Python-script, der importerer 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())

Når du kører dette script, vil det udlæse den installerede GTK+ version. Hvis alt går godt, har du sat dit udviklingsmiljø op.

  Sådan bruger du din iPhone til at indtaste adgangskoder på et Apple TV

Oprettelse af en simpel GUI-app med Glade Interface Designer og Python

Du kan designe din GUI-app i Glade Interface Designer og eksportere layoutet som en projektfil. Du kan derefter få adgang til denne projektfil fra din Python-kode.

Design af din GUI med Glade

Glades træk-og-slip-grænseflade gør det nemt at fokusere på designet uden at blive hængende i den underliggende kode. Start Glade fra dit systems applikationsmenu eller kommandolinje med denne kommando:

 glade

Du bør se Glade-grænsefladen, hvor du kan begynde at oprette dit GUI-layout.

Knappen Opret nyt projekt øverst til venstre giver et tomt lærred til dit GUI-design. Glade tilbyder en bred vifte af widgets i dens øverste bjælke, herunder knapper, tekstinput og etiketter. Træk disse widgets til dit lærred for at begynde at style din GUI. Du kan ændre størrelse og placere widgets i overensstemmelse med dine designbehov.

Først skal du vælge GtkWindow-widgetten fra Toplevels-menuen:

På siden Generelt i højre bjælke i Glade vil du se en ID-indstilling. Dette id er det unikke navn på den widget, du tilføjede. I dette eksempel skal du tildele ID’et myMainWindow til det GtkWindow, du tilføjede.

Du kan nu tilføje widgets til det hovedvindue, du har oprettet. Gå til Containere i den øverste bjælke, vælg GtkBox-widgetten, og træk den til dit arbejdsområde. Så giv den et ID, myMainBox.

  Sådan bliver du en hurtig ingeniør i 2023

Når du har tilføjet GtkBox-widgetten, vil du se forskellige muligheder til højre for dit arbejdsområde, der er specifikke for den widget. Du kan redigere hele dit design her uden at skrive nogen kode.

Tilføj derefter en kontrol-widget til dit design. For at gøre det skal du gå til Kontrol i den øverste bjælke, vælge GtkButton som eksempel og trække den hvor som helst i GtkBox. Giv det ID, myButton. Hvis du vil, kan du også ændre teksten på knappen ved at bruge fanen Generelt i panelet til højre.

GtkButton er en klikbar widget, så du kan definere en Python-handler til den og skrive den passende kode senere. Gå til fanen Signaler i højre menu og angiv en handler for det klikkede signal. I dette eksempel skal du kalde det on_button_clicked.

Du kan nu gemme dit GUI-design som en projektfil. Gem filen som myDesign.glade.

Brug af Glade Design File fra Python Code

Opret en app.py-fil i samme mappe som din myDesign.glade-fil. Indsæt følgende kode i denne fil:

 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()

Denne kode vil ændre farven på baggrunden hver gang du klikker på knappen. Bemærk kaldene til self.builder.get_object(), som videregiver ID’erne for de widgets, som du definerede i Glade.

Kør dit Python-script ved hjælp af denne kommando for at se resultatet:

 python3 app.py 

Fordele ved at bruge GTK+ og Glade til Python GUI-udvikling

Brug af GTK+ og Glade til Python GUI-udvikling giver klare fordele. Normalt tager det meget tid og kræfter at oprette en GUI. Men med Glade Interface Designer kan du fremskynde processen. Glade tilbyder også en bred vifte af widgets, hver lige så nem at bruge som knappen i eksemplet.

En vigtig fordel ved Glade er dens evne til at holde GUI-design adskilt fra koden. Dette gør vedligeholdelse og opdatering af GUI nemmere. Denne tilgang fører til renere, bedre organiseret kode i overensstemmelse med moderne programmeringspraksis.