3 points par GN⁺ 2023-12-10 | 1 commentaires | Partager sur WhatsApp

Transformer des programmes console Python en applications GUI avec Gooey

  • Gooey est un outil qui transforme les programmes console Python 3 en applications GUI conviviales.
  • En proposant une GUI à la place de l’invite de commande, il permet de rendre les programmes plus faciles à utiliser et plus esthétiques.
  • Il est utile pour créer des scripts destinés à des non-programmeurs ou des utilitaires pour des tâches comme le transfert de données.

Fonctionnement de Gooey

  • Gooey s’intègre au code en ajoutant un décorateur à une méthode contenant une déclaration argparse.
  • À l’exécution, il analyse le script Python, extrait la référence à ArgumentParser et assemble la GUI.
  • GooeyParser permet de contrôler plus finement les widgets affichés dans l’interface.

Internationalisation de Gooey

  • Gooey peut être facilement traduit dans différentes langues, et inclut actuellement plus de 18 traductions.
  • Ajouter la prise en charge d’une nouvelle langue est aussi simple que d’ajouter des paires clé/valeur dans le répertoire gooey/languages/.

Configuration globale de Gooey

  • L’apparence générale et le ressenti de Gooey peuvent être personnalisés en passant des arguments au décorateur.
  • Divers éléments peuvent être personnalisés, notamment l’encodage, la langue, la taille de démarrage et les paramètres de police.

Personnalisation de la mise en page

  • Gooey propose une mise en page flexible grâce à quelques personnalisations simples.
  • Il offre différentes options de disposition, comme l’affichage ou non d’une barre latérale, ou encore l’utilisation de groupes d’onglets.

Modes d’exécution de Gooey

  • Gooey propose plusieurs modes d’affichage permettant d’adapter la mise en page au type de contenu et au niveau d’expérience de l’utilisateur.
  • Les modes avancé, basique et sans configuration permettent de fournir une GUI adaptée à différents besoins.

Menus de Gooey

  • Il est possible d’ajouter des groupes de menus et des éléments personnalisés à la barre de menus de Gooey.
  • Différents types d’options de menu sont pris en charge pour fournir des informations sur le programme, des boîtes de dialogue de message, des liens, etc.

Validation dynamique de Gooey

  • Avant de transmettre les entrées utilisateur au programme, Gooey peut exécuter de manière optionnelle une validation préalable afin de vérifier que tous les arguments sont valides.

Événements du cycle de vie et contrôle de l’interface

  • Gooey fournit des hooks de cycle de vie permettant d’effectuer des actions de suivi supplémentaires en cas d’exécution réussie ou d’échec du programme, ainsi que de contrôler l’état actuel de l’interface.

Affichage de la progression

  • Gooey peut mettre à jour l’état de la barre de progression à partir de mises à jour textuelles de progression.
  • Des expressions régulières et des expressions d’évaluation personnalisées permettent de transmettre les informations de progression à Gooey.

Personnalisation des icônes

  • Gooey permet de remplacer les icônes par défaut par des images/icônes personnalisées.
  • L’argument image_dir permet de spécifier un répertoire d’images personnalisé.

Packaging de Gooey

  • Packager Gooey en fichier exécutable est très simple, et il est possible de regrouper l’application en exécutable prêt à l’emploi avec pyinstaller.

L’avis de GN⁺

L’élément le plus important de cet article est que Gooey permet de transformer facilement des programmes console Python en applications GUI. Cela peut rendre les programmes plus familiers et plus accessibles pour les utilisateurs non programmeurs, ce qui permet aux développeurs de se concentrer sur la logique sans se soucier de l’interface utilisateur. Les nombreux paramètres et options de personnalisation de Gooey en font un choix attrayant pour les développeurs, et cela peut contribuer de manière significative à abaisser la barrière d’entrée du développement d’interfaces GUI.

1 commentaires

 
GN⁺ 2023-12-10
Avis Hacker News
  • Explication du développeur à propos du projet Gooey

    • Gooey est un ancien projet ; au moment de son lancement, argparse était un choix solide.
    • Aujourd’hui, Gooey utilise JSON et est découplé de argparse.
    • argparse reste toutefois l’interface principale, faute de meilleure alternative évidente.
    • Gooey permet d’invoquer non seulement du Python, mais aussi n’importe quel exécutable.
    • À propos du fait que le dernier commit remonte à 2 ans, le développeur exprime son regret qu’avec l’âge et le changement de priorités, il soit devenu difficile de justifier du travail logiciel gratuit.
  • Discussion sur la relation entre Gooey et argparse

    • argparse convient aux tâches simples, mais beaucoup de CLI sont basées sur Click, et il existe aussi des bibliothèques CLI populaires construites sur Click.
    • La compatibilité avec Click n’est pas confirmée ; si l’outil est limité à argparse, l’expression « presque tous » n’est peut-être pas exacte.
    • Malgré des issues ouvertes qui n’inspirent pas totalement confiance dans le projet, l’idée elle-même reste intéressante.
  • Liens vers d’anciennes discussions sur Gooey

    • Des liens signalent que Gooey a déjà été discuté sur Hacker News en juin 2021 et en août 2014.
  • Souhait que les systèmes d’exploitation et les shells puissent mieux exécuter les programmes

    • L’idée est que les programmes puissent communiquer via JSON ou un protocole afin d’améliorer la structure des commandes shell ou l’interface GUI.
    • Aujourd’hui, on exporte des fichiers de complétion shell, il existe divers styles de flags et bibliothèques de parsing, mais pas de GUI.
  • Présentation du framework Textual

    • Présentation du framework Textual, qui permet de construire en Python, avec une API simple, des interfaces utilisateur fonctionnant dans le terminal et le navigateur web.
  • Question sur une version GUI pour ffmpeg

    • Intérêt exprimé pour un outil qui fournirait les paramètres de ffmpeg via une GUI.
  • Question sur la manière d’intégrer Gooey avec des outils CLI qui attendent une saisie utilisateur

    • Intérêt pour une méthode permettant d’ajouter une GUI à un script de bisect pour le débogage d’un moteur de jeu, afin d’aider l’utilisateur à diagnostiquer le problème.
  • Intérêt pour un outil qui convertit une GUI en CLI

    • Souhait, à l’inverse, de disposer d’un outil transformant une GUI en CLI.
  • Mention du concept de Naked Objects

    • Explication de Naked Objects, une idée selon laquelle la définition de classes Java et d’annotations permet de générer automatiquement une GUI ou un frontend web.
  • Curiosité sur la capacité de Gooey à générer une application web

    • Question sur la possibilité pour Gooey de générer une application web sans React ni JS.
    • Mention comparative de Python Script Server, un outil low-code qui place un frontend web devant un programme CLI.