Guy c'est la nouvelle version de wuy.
C'est une librairie python3 (async), qui permet de fabriquer un GUI (à base de HTML/JS/CSS), qui fonctionnera sur toutes les plateformes, et android compris.
Un 'hello world' pourrait ressembler à ça :
from guy import Guy
class Simple(Guy):
"""<button onclick="self.test()">test</button>"""
def test(self):
print("hello world")
if __name__ == "__main__":
app=Simple()
app.run()
L'idée de base, est de pouvoir créer rapidement un GUI pour son script, et de pouvoir le releaser sur toutes les plateformes. Du coup, une fois freezé (pyinstaller), on peut avoir un programme/gui qui fait dans les 7mo, et qui n'a besoin d'aucune dépendance, à part chrome.
Accessoirement, si on ne veut pas forcer l'utilisateur à avoir chrome. On peut utiliser cefpython3, pour gérer la partie cliente. Mais là, on se rapproche d'electron, et l'exe freezé fera dans les 60mo.
Toujours accessoirement, l'application guy peut également être lancer en mode server web, et utiliser n'importe quel navigateur comme client.
La principale nouveauté; c'est la possibilité de créer un APK (~13mo). Une même appli fonctionnera, sans aucune modif, sur n'importe quelle plateforme.
A ce propos, il y a un tuto pour builder son premier guy's APK :
https://guy-docs.glitch.me/howto_build_apk_android/
Si il y avait des bonnes âmes qui aimerait bien tenter de le suivre, histoire de savoir si ça marche pour d'autres personnes que moi ;-)
Alors, certes, ça peut paraître un peu "jouet" comme ça. Mais il est tout à fait possible de fabriquer des très grosses applis. Mais dans ce cas là, mieux vaut prévoir un bon framework côté JS pour assurer l'interface.
Guy est né, suite à la lecture de cet excellent journal (minipy) de @omc. C'était la feature que j'avais besoin de rajouter à wuy ;-)
# infos
Posté par voxdemonix . Évalué à 2. Dernière modification le 24 novembre 2019 à 15:06.
Pour quelqu'un qui débute/bidouille en Python, quelles sont les limitations ?
Peut-on en mettre plusieurs (par exemple la géolocalisation) ?
[^] # Re: infos
Posté par manatlan (site web personnel) . Évalué à 3. Dernière modification le 24 novembre 2019 à 15:33.
Alors, c'est des contraintes plus liées à kivy/buildozer(p4a) qu'à guy. Je n'ai pas trouvé de liste exhaustive de ce qui marche ou ne marche pas. Mais globalement, il y a plus en plus de choses qui marchent ;-)
Tout ce qui est pure python ne devrait pas poser de problèmes. Tout ce qui utilise des binaires peut être problématique.
Tout à fait ! séparé par des virgules.
J'ai màj la doc pour pointer vers la liste exhaustive d'android
[^] # Re: infos
Posté par voxdemonix . Évalué à 1.
Merci. Ça donne envie d'essayer.
# Re:
Posté par Wendigo . Évalué à 1.
Su Android, on peut déjà créer une webview avec un bridge en JS entre l'application web <-> et le code natif JAVA, du coup quel est le plus de ce projet, par rapport à cette méthode ?
[^] # Re:
Posté par manatlan (site web personnel) . Évalué à 7.
guy n'est pas exclusivement réservé au dev d'app android !
Une même application, marchera tout aussi bien sur windows, linux, mac ou autres. C'est juste une feature supplémentaire que de pouvoir, aussi, en faire un apk/android.
Accessoirement, côté backend, c'est du python (et pas du java)
[^] # Re:
Posté par _kaos_ . Évalué à -6.
Salut,
Peux-tu développer ?
Je fais du java et du python en backend et (grosse surprise) je fais plus de bugs en python qu'en java.
Matricule 23415
[^] # Re:
Posté par barmic 🦦 . Évalué à 4.
Il a dit que c'est une différence. Son truc permet aux développeurs python de faire ce que les développeurs java peuvent faire nativement (du fais de l'API java d'android)
https://linuxfr.org/users/barmic/journaux/y-en-a-marre-de-ce-gros-troll
[^] # Re:
Posté par _kaos_ . Évalué à -10. Dernière modification le 24 novembre 2019 à 19:26.
Salut,
Et moi je dis que python ou java, ce n'est pas le soucis.
Donc les devs python seraient inférieurs aux devs java ?
Matricule 23415
[^] # Re:
Posté par barmic 🦦 . Évalué à 5.
Hein ?! Pourquoi tu met des questions de valeur dans tes commentaires ? Il faut nécessairement un plus fort ?
Ça permet aux gens qui veulent faire du python d'en faire.
https://linuxfr.org/users/barmic/journaux/y-en-a-marre-de-ce-gros-troll
[^] # Re:
Posté par _kaos_ . Évalué à -9.
Salut,
Je crois que tout le monde a compris : il n'y a aucun commentaire de valeur.
Matricule 23415
[^] # Re:
Posté par fasthm . Évalué à 6.
Je crois que tout le monde a compris : il n'y a aucun commentaire de valeur.
Ah mais pas du tout efface, mo je ne comprends rien au sens de ton commentaire. C'est pas bien python ?
La gent féminine, pas la "gente", pas de "e" ! La gent féminine ! Et ça se prononce comme "gens". Pas "jante".
[^] # Re:
Posté par manatlan (site web personnel) . Évalué à 4.
Marrant … Je fais aussi du python et du java (jboss/springboot) ;-)
Mais de là à dire que je fais plus de bug en python qu'en java … non ;-)
Suffit d'être organiser et d'écrire des tests qui couvrent.
De grands pouvoirs impliquent de grandes responsabilités.
Une application guy : c'est en fait une partie serveur (backend), en python … et une partie cliente (frontend), en html/js. Ces 2 là, communiquent ensemble via une websocket. La partie cliente est automatiquement lancé dans un chrome "headless". Le tout, donne l'impression d'une vraie appli. Avec un peu de css/js, tu arrives simplement à donner un look'n'feel d'appli native, et bluffer ton client.
Bref, c'est du "python pure" (Il faut, evidemment, qques connaissances html/js/css pour faire un GUI décent)
Ce n'est lié aucunement à java.
[^] # Re:
Posté par _kaos_ . Évalué à -4. Dernière modification le 24 novembre 2019 à 19:15.
Salut,
Ah bon, ça me rassure.
Ah bin là, on n'est plus dans le pur :)
Matricule 23415
[^] # Re:
Posté par ze0 . Évalué à 2.
Personnellement je fait beaucoup de python et de techno web (comprendre frontend) et j'ai pas trop envie d'investir du temps à apprendre du java quand j'ai des besoin mobile. Jusqu'ici j'ai toujours eu des moyens d'esquiver (ionic par exemple) mais souvent full js, la j'ai du python je suis content.
Après, la dépendance à kivy/buildozer me fait un peu peur, (j'ai pas eu de bonne expériences avec ,beaucoup de temps perdu pour des broutilles, mais qui sait, ça c'est peut être amélioré et moi aussi depuis le temps.)
NB: je considère pas Java comme de la merde mais comme un écosystème complexe avec une courbe d’apprentissage trop pentu pour moi et un investissement en temps trop important pour mes besoins
[^] # Re:
Posté par manatlan (site web personnel) . Évalué à 1.
Si t'arrives a installer les couches Kivy/bulldozer …
Le tuto joint ne devrait poser aucun problème … Jusqu'au déploiement sur le play store…
Chez moi ça marche !
Maintenant Guy est exactement fait pour les gars comme nous. Python, pk c'est bon … Et HTML/je/CSS pour le front.
A partir de la tout est possible … Tu peux profiter des 2 eco système et utiliser leurs meilleures pubs.
[^] # Re:
Posté par manatlan (site web personnel) . Évalué à 1.
s/pubs/libs/g
# Petites remarques
Posté par barmic 🦦 . Évalué à 5.
Ton projet est plutôt sympa. J'ai de petites remarques :
https://linuxfr.org/users/barmic/journaux/y-en-a-marre-de-ce-gros-troll
[^] # Re: Petites remarques
Posté par manatlan (site web personnel) . Évalué à 3.
merci pour le retour
Tout à fait … ça a juste un côté très pratique pour "vite faire".
Pour les plus gros projets : mieux vaut séparer le contenu du contenant
Non, il suffit de créer un fichier du nom de la classe dans le répertoire "static".
si tu as une classe
--> il faudra un fichier "static/MyApp.html"
C'est dans la doc, partie "rendering" … mais ça mérite eclaircissement
Ce dernier ne sert juste qu'à offrir une possibilité, coté back, de retourner du contenu par http. (une sorte de hook dans le serveur http de guy).
C'est vraiment pour faire du spécifique.
Mais une application guy communique par websocket principalement.
Dans ce hook http, tu peux tester le verbe http, et réagir ou non.
Fort probable!
Il y a le minimum ;-)
Disons, qu'en "mode app" (app/cef), le serveur http/ws n'écoute que sur le localhost (pas en wide/0.0.0.0). Comme c'est dédié à la partie cliente-forcément en localhost) : c'est suffisant. Du coup, impossible de venir interférer sur le serveur à partir d'une autre machine que localhost.
En mode serveur : il écoute en wide/0.0.0.0, car c'est plus pratique pour venir s'y connecter d'autres machines ;-). Après, si c'est destiné à être hébergé sur un vrai serveur. Tu peux mettre du nginx en front, avec certificats/ssl et co.
[^] # Re: Petites remarques
Posté par manatlan (site web personnel) . Évalué à 3.
non, ça c'est une feature pour des cas assez particulier où tu aurais besoin de produire du html dynamiquement.
J'ai une démo, où j'utilise ça pour générer automatiquement des composants/sfc vuejs, à l'aide de vbuild
a guy's app serving a vuejs/sfc UI (Play with sources)
# Un autre guy
Posté par El Titi . Évalué à 3.
… en a parlé sur reddit ;-)
Longue vie !
Suivre le flux des commentaires
Note : les commentaires appartiennent à celles et ceux qui les ont postés. Nous n’en sommes pas responsables.