Kivy, ce framework python aux capacités insoupçonnées et méconnues

Le framework Kivy est un logiciel libre bénéficiant d’un développement actif, porté par des développeurs passionnés (aucun salarié). Il est encore peu, voire mal, connu du public francophone.

Fonctionnant sur toutes les plateformes, y compris celles disposant de peu de ressources, il est principalement connu pour le développement d’applications Android en Python. Pourtant, Kivy excelle dans bien d’autres domaines.

Pour le promouvoir auprès des francophones et parler du Kivy « graphique » que j’apprécie particulièrement, j’ai écrit quelques articles sur le sujet, publiés sur DVP, notamment : Pourquoi choisir Kivy plutôt que Pygame pour la création de jeux graphiques en Python ? - Blogs - Forum du club des développeurs et IT Pro
et dernièrement
Kivy, ce framework python aux capacités insoupçonnées et méconnues - Blogs - Forum du club des développeurs et IT Pro .

2 « J'aime »

Merci pour ces articles!
J’étais justement entrain de chercher une alternative pour optimiser un simulateur et j’avais prévu de tester PyGame pour ça, mais si Kivy offre de meilleures performances graphiques je crois que j’irai plutôt vers ça.

1 « J'aime »

Il existe aussi pyglet, kivy me semblait “lourd” pour la compilation mais c’est peut-être parce que je ne l’ai testé que pour des “applis android” ?

Une petite proposition de conférence pour la PyConFR ? :wink:

1 « J'aime »

Kivy dispose d’une documentation précise et bien détaillée (plutôt à destination des dév). Cependant, comme peu de dév utilise ses capacités graphiques (il y en a tout de même), vous trouverez peu de cas d’usage. Travailler dans ce sens avec Kivy, c’est un peu comme être un explorateur de terre inconnue.
Kivy peut déjà beaucoup tel quel, mais si l’on veut exploiter pleinement le GPU (tout dépend de ses besoins) il peut être nécessaire d’ajouter une couche de GLSL(shader) via sa classe Rendercontext (intégration native documentée).
En résumé, si vous l’âme d’un aventurier et que vous êtes prêt à plonger dans la doc, le kivy ‘graphique’ est fait pour vous. Avec pygame, vous trouverez facilement des tutoriels et des cas d’usage.

1 « J'aime »

Pour ma part, je ne me sens pas la capacité d’animer une conférence (ou de parler devant un public) pour la PyConFR . J’ai cependant posé la question auprès des développeurs francophones . Attendons leurs retours :wink: .
Cette participation peut-elle se faire à distance?

Non, ce n’est pas prévu.

Plutôt que pygame, j’utilise arcade (avec une API plus moderne, une techno plus moderne, The Python Arcade Library — Python Arcade 3.3.0). J’ai jamais utilisé de près kivy, mais de mémoire il y avait un langage à apprendre, un peu à la QML de Qt, non ? Peut-on tout faire en Python ?

1 « J'aime »

J’aurais dit que c’était plus comme du CSS dans mon souvenir, et c’'était très impressionnant et pas si dur à apprendre <3

oui il existe pour kivy le Kvlang, un langage de type déclaratif qui permet de séparer la logique de l’interface graphique, mais rien n’oblige à l’utiliser. C’est quand même dommage de s’en passer. Il est très facile à prendre en main. J’ai regardé ton lien, ça semble bien sympa. Je regarderai plus attentivement. Merci

le kvlang ressemble à ça:

<WidgetRoot>:
   

    Editor:
        pos: self.pos
        size: self.size
        id: editor

    #SpeedControlWidget:
        #pos: self.pos
#
    DropdownMenu:
        id: dropdownmenu
        pos: self.pos
    WidgetZoom:
        id: widgetzoom
        pos: self.pos
    CursorManager:
        id: cursormanager
        pos : (0,0)```

Petit exemple d’animation que j’ai réalisé avec Kivy: https://www.youtube.com/shorts/Vly0ruycHE0
Pour vous rendre compte de la puissance de kivy, visionnez donc la chaîne de Gabriel Pettier (Tshirtman) dont j’affectionne particulièrement le travail avec kivy: https://www.youtube.com/watch?v=Umls6ytXasU&t=52s .
Je l’ai sollicité pour présenter Kivy à la prochaine PyCon-FR et il (re-)participera peut être (sans promesse de sa part).

Arcade est d’ailleurs basé sur pyglet déjà cité.
Pyglet est une lib très minimaliste (mais non pas moins puissante) pour placer des images à l’écran, exécuter des primitives OpenGL et interagir avec les événements entrants, là où Arcade offre toute une surcouche pour faciliter le développement de jeux 2D.

1 « J'aime »

Kivy c’est cool, par contre pour faire des applications Android tu est presque obligé d’utiliser kivymd avec si tu veux un truc pas trop moche. Et kivymd c’est plus compliqué déjà y a 2 version. Sur pypi tu as l’ancienne donc faut installer depuis github. La doc si tu viens depuis un moteur de recherche t’as une chance sur deux pour être sur la mauvaise. Et y a beaucoup de crash si ton appli se fait mettre en veille par Android. Bien sur avec un appareil en mode dev tu n’auras aucun bug sinon ça serait trop facile pour debugger, et faut aimer les temps de lancement long. Donc si c’est pour faire du python sur Android ça roule. Mais avec le recul je me demande si c’est une bonne idée de faire du python sur Android.

Dans le cadre du kivy ‘graphique’ aucun intérêt à utiliser Kivymd . Tu ne m’as manifestement pas lu :wink: .
Quant au crash que tu as rencontré, faudrait voir comment tu as géré ton code. En tout cas à ce jour, Kivy est fiable. Si ce n’était pas le cas aucun professionnel l’utiliserait .

Wouh <3 Je vais le relancer aussi alors

1 « J'aime »

Pour du graphique type jeux oui, mais ça restreint vachement la porté. C’est presque dommage de ne pas avoir intégré la partie UI classique dedans car oui la qualité de kivy est bien supérieure à celle de kivymd. Par contre le souci qu’il reste c’est le temps de lancement sur Android, ce n’est pas la faute de kivy mais du temps de démarrage de l’interpréteur python. Après j’ai l’impression que le souci de perf au lancement est générale, les applications en général mettent autant voir plus de temps a démarrer qu’il y a 20 ans (sauf jeux) malgré des cpu rapide, de la ram a gogo et les SSD.
Et utilisé par des pro n’est pas un critère de qualité, je vois bien trop de pro utiliser des trucs moyen ou pas adapté. Soit parce que c’est tout simplement ce qu’ils connaissent, soit parce qu’un supérieur a choisi une techno au pif et t’as pas le choix. J’ai moi même eu ce biais je voulais pas me prendre la tête a me remettre sur Android studio. Car côté dev la stack kivy + buildozer tourne dans un vulgaire terminal et ça c’est cool.

1 « J'aime »

merci du retour, notamment sur le métier de dév dont je ne peux qu’imaginer les contraintes.
Pour info concernant l’aspect de l’interface, il y a cette lib ressente ‘CarbonKivy’ offrant à kivy un visuel IBM’s Carbon

L’orga de la PyconFr peut te donner des billes pour t’aider à construire et préparer ta conf. En tout cas moi je peux, j’ai déjà coaché des nouveaux/nouvelles conférencières et c’est à 50 % pour faire ça que j’ai rejoint l’orga de la PyconFr. ^^

(Ça vaut aussi pour les autres développeurs francophones que tu mentionnes, mais comme c’est toi qui as amené le sujet et que tes messages m’ont donné envie d’en savoir plus, je pense que ta conférence serait appréciée par d’autres !)

1 « J'aime »

Je te remercie pour ta proposition et ton implication . Ça m’oblige néanmoins à décliner une nouvelle fois l’invitation .
Au-delà que je ne sens pas à me confronter à ce type d’exercice, mes contraintes de vie ne me permettraient pas d’y participer (élevage+Malinois). Et puis comme ma pratique du Kivy se situe en marge de ce qui se fait, mon intérêt se portant exclusivement sur l’ approche graphique, je suis mal placé pour intervenir sur l’aspect UI de Kivy.

Est-ce qu’une conférence sur la création d’un petit jeu avec arcade aurait un intérêt ?