3 Punkte von GN⁺ 2023-12-10 | 1 Kommentare | Auf WhatsApp teilen

Python-Konsolenprogramme mit Gooey in GUI-Anwendungen verwandeln

  • Gooey ist ein Tool, das Python-3-Konsolenprogramme in benutzerfreundliche GUI-Anwendungen umwandelt.
  • Anstelle einer Eingabeaufforderung bietet es eine GUI und macht Programme dadurch einfacher nutzbar und ansprechender.
  • Besonders nützlich ist es, wenn man Skripte für Nicht-Programmierer oder Utilities für Aufgaben wie Datenübertragung erstellen möchte.

Funktionsweise von Gooey

  • Gooey wird in den Code eingebunden, indem einem Methode mit einer argparse-Deklaration ein Decorator hinzugefügt wird.
  • Zur Laufzeit parst es das Python-Skript, extrahiert ArgumentParser-Referenzen und setzt daraus die GUI zusammen.
  • Mit GooeyParser lässt sich feiner steuern, welche Widgets in der GUI angezeigt werden.

Internationalisierung von Gooey

  • Gooey lässt sich leicht in verschiedene Sprachen übersetzen; aktuell sind bereits mehr als 18 Übersetzungen enthalten.
  • Unterstützung für eine neue Sprache ist so einfach wie das Hinzufügen von Schlüssel/Wert-Paaren im Verzeichnis gooey/languages/.

Globale Einstellungen von Gooey

  • Das allgemeine Erscheinungsbild von Gooey lässt sich anpassen, indem Argumente an den Decorator übergeben werden.
  • Verschiedene Konfigurationselemente wie Encoding, Sprache, Startgröße und Schriftarten lassen sich individuell festlegen.

Layout-Anpassung in Gooey

  • Gooey bietet mit einigen einfachen Anpassungen ein flexibles Layout.
  • Es stehen verschiedene Layout-Optionen zur Verfügung, etwa die Anzeige einer Sidebar oder die Verwendung von Tab-Gruppen.

Anzeigemodi von Gooey

  • Gooey bietet mehrere Anzeigemodi, mit denen sich das Layout an die Art des Inhalts und das Erfahrungsniveau der Nutzer anpassen lässt.
  • Mit den Modi Erweitert, Einfach und Ohne Konfiguration lassen sich GUIs für unterschiedliche Anforderungen bereitstellen.

Menüs in Gooey

  • Benutzerdefinierte Menügruppen und Einträge können zur Menüleiste von Gooey hinzugefügt werden.
  • Es werden verschiedene Arten von Menüoptionen unterstützt, darunter Programminformationen, Meldungsdialoge und Links.

Dynamische Validierung in Gooey

  • Bevor Benutzereingaben an das Programm übergeben werden, kann Gooey optional eine Vorabvalidierung ausführen, um sicherzustellen, dass alle Argumente die Prüfung bestehen.

Lifecycle-Events und UI-Steuerung in Gooey

  • Gooey bietet Lifecycle-Hooks, mit denen zusätzliche Folgeschritte bei erfolgreicher Ausführung oder Fehlern möglich sind und sich der aktuelle Zustand der UI steuern lässt.

Fortschrittsanzeige in Gooey

  • Gooey kann den Status eines Fortschrittsbalkens anhand textbasierter Fortschritts-Updates aktualisieren.
  • Über reguläre Ausdrücke und benutzerdefinierte Auswertungs-Ausdrücke kann der Fortschritt an Gooey übermittelt werden.

Anpassung von Icons in Gooey

  • Gooey ermöglicht es, Standard-Icons durch benutzerdefinierte Bilder oder Icons zu ersetzen.
  • Über das Argument image_dir kann ein benutzerdefiniertes Bildverzeichnis angegeben werden.

Packaging von Gooey

  • Das Packaging von Gooey als ausführbare Datei ist sehr einfach; mit pyinstaller lässt sich die Anwendung zu einer fertigen ausführbaren Datei bündeln.

Meinung von GN⁺

Der wichtigste Punkt dieses Artikels ist, dass Gooey Python-Konsolenprogramme sehr einfach in GUI-Anwendungen umwandeln kann. Dadurch werden Programme für Nutzer ohne Programmierkenntnisse vertrauter und leichter zugänglich, sodass sich Entwickler auf die Logik konzentrieren können, ohne sich intensiv um die Benutzeroberfläche kümmern zu müssen. Die vielfältigen Einstellungen und Anpassungsoptionen machen Gooey zu einer attraktiven Wahl für Entwickler und können die Einstiegshürde in die GUI-Entwicklung deutlich senken.

1 Kommentare

 
GN⁺ 2023-12-10
Hacker-News-Kommentare
  • Erläuterung des Entwicklers zum Gooey-Projekt

    • Gooey ist ein älteres Projekt; als es begann, war argparse eine solide Wahl.
    • Heute verwendet Gooey JSON und ist von argparse entkoppelt.
    • argparse bleibt weiterhin die Hauptschnittstelle, aber es gibt keine wirklich überzeugende Alternative.
    • Mit Gooey lassen sich nicht nur Python-Programme, sondern auch beliebige ausführbare Dateien aufrufen.
    • Zur Frage, dass der letzte Commit zwei Jahre zurückliegt, äußert er Bedauern darüber, dass es mit zunehmendem Alter und veränderten Prioritäten schwieriger geworden ist, unbezahlte Arbeit an Software zu rechtfertigen.
  • Diskussion über die Beziehung zwischen Gooey und argparse

    • argparse eignet sich für einfache Aufgaben, aber es gibt viele auf Click basierende CLIs, und auch populäre CLI-Bibliotheken bauen auf Click auf.
    • Es ist nicht bestätigt, ob Gooey mit Click kompatibel ist; wenn es auf argparse beschränkt ist, ist die Formulierung „fast alle“ möglicherweise nicht ganz zutreffend.
    • Obwohl es offene Issues gibt, die nicht gerade Vertrauen in das Projekt schaffen, enthält das Projekt selbst eine interessante Idee.
  • Verweise auf frühere Diskussionen zu Gooey

    • Es werden Links genannt, die darauf hinweisen, dass es im Juni 2021 und im August 2014 bereits Diskussionen über Gooey auf Hacker News gab.
  • Wunsch, dass Betriebssysteme und Shells Programme besser ausführen können

    • Es besteht die Hoffnung, dass Programme über JSON/Protokollformate kommunizieren könnten, um Shell-Befehlsstrukturen oder GUIs zu verbessern.
    • Der aktuelle Zustand ist, dass Shell-Completion-Dateien exportiert werden, verschiedene Flag-Stile und Parsing-Bibliotheken existieren und GUIs fehlen.
  • Vorstellung des Textual-Frameworks

    • Vorgestellt wird das Textual-Framework, mit dem sich in Python über eine einfache API Benutzeroberflächen erstellen lassen, die im Terminal und im Webbrowser laufen.
  • Anfrage nach einer GUI-Version für ffmpeg

    • Es wird Interesse an einem Werkzeug geäußert, das die Parameter von ffmpeg in einer GUI bereitstellt.
  • Frage zur Integration von CLI-Werkzeugen, die Benutzereingaben erwarten, mit Gooey

    • Es besteht Interesse daran, einem Bisect-Skript zum Debuggen einer Game-Engine eine GUI hinzuzufügen, um Nutzern bei der Problemdiagnose zu helfen.
  • Interesse an einem Werkzeug zur Umwandlung von GUI in CLI

    • Es wird der Wunsch nach einem Werkzeug geäußert, das umgekehrt eine GUI in eine CLI umwandelt.
  • Erwähnung des Naked-Objects-Konzepts

    • Beschrieben wird Naked Objects als Idee, bei der durch das Definieren von Java-Klassen und Annotationen automatisch ein GUI- oder Web-Frontend erzeugt wird.
  • Neugier, ob Gooey Web-Apps erzeugen könnte

    • Es wird gefragt, ob Gooey Web-Apps ohne React oder JS erzeugen kann.
    • Außerdem wird Python Script Server als Low-Code-Werkzeug erwähnt, das einem CLI-Programm ein Web-Frontend voranstellt.