Journal WUY : simple GUI pour python3 ... et taptempo ;-)

Posté par  (site web personnel) . Licence CC By‑SA.
Étiquettes :
20
19
août
2018

WUY est un simple module python qui permet de transformer votre script python3 en GUI, et ça fonctionne sous linux, mac ou windows (pour peu que la plateforme possède un chrome)

Voilà un exemple de taptempo ;-), en wuy/py3 :

import wuy,datetime

class taptempo(wuy.Window):
    """ <button onclick="wuy.tic().then(x=>{document.querySelector('#tempo').innerHTML=x})">Tap Tempo</button> 
        <span id="tempo"></span>
    """
    size=(100,60)
    t=[]

    def tic(self):
        self.t.append( datetime.datetime.now() )
        ll=[ (j-i).microseconds for i, j in zip(self.t[:-1], self.t[1:]) ][-5:]
        if ll: 
            return int(60000000*len(ll)/sum(ll))

taptempo()

WUY est dispo sur github, et sur pypi.

Sous le capot: ça lance un chrome en mode application, qui communique avec le script via une websocket.

Le front, se fait en html/js (dans la docstring ou dans des fichiers). Le back : c'est du python3 (aiohttp, asyncio, uvloop)

Voilà, ça peut intéresser des gens ;-)

NB: j'aimerai pouvoir targetter android aussi, via buildozer ou autre … qqu'un a des compétences là dessus ?

  • # Ramivore 6.4

    Posté par  . Évalué à 6.

    Sous le capot: ça lance un chrome en mode application (…) Le front, se fait en html/js (dans la docstring ou dans des fichiers). Le back : c'est du python3 (aiohttp, asyncio, uvloop)

    Je veux pas troller mais au début j'ai cru c'était une blague.

    Et après : "you want to add a GUI but without using the biggest qt/gtk/tk/wx/kivy : you are in the right place !"

    Bon ç'est cool ça peut sûrement être pratique pour je ne sais quel raison, mais ce "without the biggest" Hmmmmm.

    • [^] # Re: Ramivore 6.4

      Posté par  (site web personnel) . Évalué à 2.

      J'ai patché … évitons le troll ;-)

      • [^] # Usecase

        Posté par  . Évalué à 3. Dernière modification le 20 août 2018 à 19:05.

        Ce qui est important c'est d'éduquer les devs qu'ils comprennent bien ce que c'est que "Cas d'utilisation".

        Nan parce que les "je ne sais quoi" qui te code des drivers pour souris dans un chrome en react javascript machin d'electron qui se lance au démarrage et te prend 400M de ram, franchement ça me donne des envies de meurtres. (Oui ça existe : Steeleseries)

  • # mon rêve devient réalité.

    Posté par  . Évalué à 3.

    J'ai toujours rêvé de brancher un Django sur un truc comme ça !

    Merci pour Wuy

    • [^] # Re: mon rêve devient réalité.

      Posté par  (site web personnel) . Évalué à 4.

      merci, suis content de donner du rêve ;-)

      Je pense qu'on est plein de dev ayant la double compétence python/html-js. Du coup, ça a du sens que de pouvoir proposer le front en js, avec un back en py3. Avec un framework comme vuejs, on arrive rapido à faire des GUIs balaises.
      Pour ma part, après avoir bien plongé dans les angular/riotjs/vuejs … refaire du GUI classique me semble fade.

  • # qques vrais exemples

    Posté par  (site web personnel) . Évalué à 4.

    J'ai rajouté qques vrais exemples (des vraies app utilisables IRL):

    https://github.com/manatlan/wuy/tree/master/examples

    Dont:

    • un WuyFreezer, un GUI pour freezer son app en standalone executable (marche sous toutes les plateformes)
    • un frontend à 'du' pour chercher les fichiers qui prennent de la place dans son filesystem
    • et le fameux taptempo ;-) (je ne m'en lasse pas, même si perso, j'utilise plutôt la version PWA sur mon smartphone ;-)
  • # transformer ?

    Posté par  . Évalué à 6.

    module python qui permet de transformer votre script python3 en GUI

    Quand je lis ça je me dis que je touche pas à mon script python et que j'obtiens une GUI, génial !

    Mais, avec quelle assomption ? Un fonction devient un formulaire ?
    Il faut annoter avec un décorateur comme avec baker qui transforme une fonction en commande en ligne par introspection du code ?

    Bah non en fait, à la lecture, je comprends qu'il faut implémenter une GUI, en HTML+JS.

    Donc ça transforme pas.

    Ascenseur émotionnel de "waouh" à "mouai".

    Attention, je ne dis pas que c'est pas intéressant, utile, plus simple que les autres GUI, astucieux, bien codé, etc.

    Je dis juste que c'est survendu ou que j'ai sur-acheté…

    Merci pour le partage en tout cas

    • [^] # Re: transformer ?

      Posté par  (site web personnel) . Évalué à 2.

      En anglais j'aurai dit qqchose du style : which let you turn on your script into gui
      Mon français n'est pas bon ;-)

      Voilà le script originel :
      https://github.com/TapTempo-Federation/TapTempo-python27/blob/master/TapTempo.py

      Il a bien été "transformé" en GUI (cf dans le post en haut)

      NB : la version wuy est plus courte/lisible que la version originelle ;-)

    • [^] # Re: transformer ?

      Posté par  . Évalué à 3. Dernière modification le 21 août 2018 à 15:22.

      Plus récent que baker et avec une approche un peu différente pour mettre au point un CLI rapidement:
      Fire

      • [^] # Re: transformer ?

        Posté par  . Évalué à 2.

        Ça propose en effet des fonctionnalités intéressantes :

        • mode interactif,
        • script de complétion pour le shell
        • trace complète de la demande

        Merci du tuyau

  • # Gooey

    Posté par  . Évalué à 2.

    Sinon il y a Gooey.

Suivre le flux des commentaires

Note : les commentaires appartiennent à celles et ceux qui les ont postés. Nous n’en sommes pas responsables.