[Résolu][Python] Vos avis sur le choix pour un GUI

Salut, j’ai déjà un projet en cour fait simplement avec un serveur Web (apache) et un client Web (chromium en Kisok). Mais les performances avec un Pi Zero ne sont pas très bonne, alors je songe à coder en Python l’interface.

Faut savoir que tout mes récoltes de données sont déjà effectué par un scrip PHP en background, comme `ca je gagne plus en performances que si le Apache le fait lui même, et évite la récolte excessive. Actuellement je garde mon serveur Apache, vu que j’ai 1 appel qui me sort tout en JSon, avec un test d’application Python+TKinter, j’arrive à avoir mes données et les travailler/afficher.

J’ai organisé un peu et fait un design de base qui reproduit ce que j’ai déjà en version HTML, (position des éléments) sans accoder de temps pour le style. Voici le rendu avec Python;
Screenshot_7
Et le rendu actuel en HTML/CSS;

Mais TKinter ne me permet pas de créer un arrière plan transparent pour les Frame ou les Label, ce qui m’empêche d’utiliser mon arrière plan. Une transparence est possible, mais pour tout l’application (pas de layer), alors ont voit le bureau; problème quand tu n’as que la base du serveur X pour exécuter un GUI.

Alors j’arrive à ces questions et je me dit que des avis serais mieux que de fouiller et tester plusieurs librairies et autres.

  1. Quel librairie me permettrais de travailler le design, tout en étant légé et pouvant rouler avec un minimum pour reproduire correctement mon Deskboard.
  2. Actuellement je travail avec le IDLE de Python, mais j’aimerais avoir un programme plus outillés, genre avec un outils d’aide pour le design de la fenêtre (un peu comme sous Delphi, ou Android Studio)

J’ai regardé aussi FlaskWeb mais il ne marche pas avec une URL serveur, faut ce soit géré par lui-même et j’ai quelques problème de lancement d’une page. Il y a aussi PyWebView mais sous Windows 10 j’ai un problème avec les pack requis (problème de compilation de pythonnet) et est basé Chromium, alors est-ce qu’il serais aussi « pesant » dans les ressources ? Car j’utilise du Javascript, des feuilles de styles et des appels de type Ajax pour le rendu et l’actualisation.

Bon, certain dirons que j’ai trouvé le moyen de me parler à moi-même avec ce sujet. :stuck_out_tongue:

J’ai trouvé « Glade » pour me faciliter la gestion du GUI, il marche sous GTK+, qui sera ma librairie de choix pour ce projet. J’ai tenté certains librairies avant GTK+, mais il faut compiler beaucoup (trop) de modules pour arriver à de quoi. Je viens de tester mon code sous mon PiZero avec Raspbian et il marche, ce n’est pas terminé, mais j’ai ce que je voulais. Reste que c’est moins beau que du CSS3.

Screenshot_8
(sous Pi de test)
Screenshot_10
(sous Win10, avec les polices du projet)

L’idée est surtout de voir les possibilités, car avant d’avoir une version finale, je dois encore m’habituer aux codes avec du Python.

Oui, c’est mes premiers pas avec Python.

Bonjour,

Au fil de mes recherches, Glades était ressorti aussi comme projet prometteur (mais je n(ai rien testé :sweat_smile:
Il serait intéressant que tu nous donne un premier retour d’expérience de son utilisation, si tu le veux bien.

Bonne bidouilles
A+

Glades est fantastique sur plusieurs points, mais c’est un outils en plus et non un IDE complet, c’est avant tout un GUI pour t’aider a faire tes GUI pour GTK. Il permet d’ajuster facilement tout et de donner les paramètre pour utiliser plus tard.

Le GUI créé est sous le format .glade, il faut l’importer dans le script Python pour l’utiliser, mais dans tous ça, tu touche jamais au code de ton GUI, seulement les tâches « background », dans une autre éditeur.

Question d’utiliser les même logiciel avec mon PC et Raspberry, j’ai utilisé comme IDE Thonny avec le pack compilateur Ming (python 3 sous Windows)

Glade est vraiment que pour le UI, pas de code source disponible a éditer (par exemple sous Android Studio, tu peux ajuster le GUI par le code, pour « forcer » des choses). Il est simple et capricieux, il est difficile de changer de conteneur par exemple, il faut « couper » le contenue, l’effacer, créer le nouveau conteneur et « coller » ce qui doit y aller. Et au lieu d’ajouter via le « TreeView », c’est sur le GUI, ce qui cause des troubles parfois si tu n’as pas fait dans le bon ordre tes ajouts. Mais reste que j’ai grandement avancé, sous Windows j’ai tout qui marche.

Et comparer à TKinter, c’est vraiment autre chose GTK, le TKinter a l’avantage d’être vraiment très simple et rapide à mettre en exécution, GTK lui requière pas mal plus de doigté, et GTK n’est pas que pour Python (Yeah !! ?), ce qui fait que les recherches sont un peu plus compliqué (Ah :frowning: ) qu’avec TKinter. Mais GTK permet de faire beaucoup plus avec le GUI, comme ont peut voir avec ma première image, pas de « transparence » des bloc sous TK, GTK lui permet pas mal plus et vient avec plusieurs sous librairies.

Glade est basé sur le GTK.


Dans ce cas si, j’ai codé sous Windows; Python 3, managé avec Ming (et pacman). J’ai utilisé Glade pour le GUI, et Thonny comme IDE avec le compilateur pointé sur celui de Ming. J’ai du installer quelques libairies, qui sont présente (ou non) sous Raspberry Pi sans ajout; GTK+, Pixbuf, GSTreamer (+plugins), et des lib generic; datetime, json, requests.

Screenshot_11

Le code qui va chercher les datas aux sources est en PHP (j’ai plus de connaissances et d’aissances) et roule en arrière plan. Il génère des fichiers sous JSON qui sont utiliser par mon serveur Apache pour le donner en 1 seul gros fichier JSON. (note: le projet actuel est sous Chromium + Apache, pour ça la présence du serveur Apache). Éventuellement le serveur Web va « prendre le bord ». à chaque 5s, le script s’actualise sur un appel et actualise toutes les données. Les petites détails sont …

  • Utilisation d’images local, sauf pour la météo qui est téléchargé, mais pas rechargé si identique à chaque « refresh »,
  • Capture de la météo au 15m, les courriels aux 5m,
  • À droite, en bas, c’est ma liste de chose à faire, la « To Do List » de la journée en cours,
  • à gauche c’est le lecteur, dans mon cas j’écoute plus de quoi rapidement avec ce type d’outils, alors il pointe sur ma radio Internet, bouton « transparent », timer d’écoute et nom de la radio + piste en cour sous la forme d’un « marquee ».
  • au passage, mon script PHP fait parler mon Pi à toutes les heures « Il est actuellement XX heure » et au changement de jour « Nous sommes rendu le DDDD, XX, MMMM 2021 »