Session du 16 septembre 2024 à 21h00
Développement Web & Frameworks
Deviens membre Premium magic_button
Cette session de mentorat est réservée aux membres Premium. Rejoignez-nous pour accéder à toutes les rediffusions des sessions de mentorat !
Premium
- check +100h de formations
- check +180 exercices de code
- check +100h de mentorats en rediffusion
- check 20 projets
- check Mentorats groupés hebdomadaires
- check Support individuel avec nos mentors
Session de mentorat : découverte de Streamlit
Nous allons créer une petite application avec une interface en Python avec Streamlit :)
00:00:00 :Ok, je commence à enregistrer, c'est parti.Du coup, bonsoir tout le monde.Question, est-ce qu'il y en a qui connaissent Streamlit avant ou pas, ou pas du tout ?
00:00:19 :Vas-y Arsène.Ah ben oui, je pense que d'ailleurs on en avait parlé l'autre fois,et j'ai pu créer quelques petits projets Streamlit,entre autres la liste de courses en orienté objet.
00:00:44 :J'ai fait une petite version Streamlit et c'était quand même intéressant.Et j'ai aussi suivi le mentorat de Jean-Pierre,où il en parlait, avec le module Pandas, si je ne me trompe pas.
00:01:05 :Et c'est très intéressant.Ah nickel.Bonsoir.Ben écoute, c'est parti.Du coup là le but avec Streamlit, c'est qu'on va se fairepour ceux qui n'ont jamais vu.
00:01:25 :Ils ont une page, un site super bien.Voilà, ils ont un site qui est très bien fait.On peut aller voir les composants, ce qu'ils ont fait.
00:01:37 :On peut aller voir sur la doc, API références,tous les éléments qu'on peut avoir.Donc en fait c'est un framework en Python,c'est un framework qui nous permet de créer des interfacesassez facilement, mais vraiment facilement.
00:01:53 :Il y a des boutons tout faits, c'est vraiment pas mal.Donc on va se créer une petite application de culture générale,juste pour illustrer un peu l'exemple,qu'on peut faire des trucs assez cool avec.
00:02:07 :Je vais le mettre là pour l'instant.Du coup pour ça, on va se créer un petit fichier main.Et on va avoir un fichier, les questions en JSON.
00:02:28 :C'est là où on va en fait stocker les questions.Je n'ai pas fait de base de données,j'en ai préparé quelques-unes.Et en gros c'est ça.
00:02:37 :Donc on va avoir différentes questions.Donc on a la question, la différence d'options,et la bonne réponse à chaque fois.Et c'est toujours le même schéma.
00:02:45 :Maintenant je vais, on va regarder,du coup on va installer Streamlit.C'est tout simple.C'est la section Streamlit.Il n'y a pas de chose avec Streamlit,c'est pour ça que c'est un peu long.
00:03:10 :Et normalement,ça met la blinde de temps à charger.Voilà, ok.Hop, donc là on peut importer Streamlit normalement, voilà.Donc dans la convention, dans la documentation,ils mettent toujours un alias.
00:03:32 :Par exemple avec Streamlit,si on veut afficher une page avec du texte,je vais donc placer mon texte.Donc là il y a plein de composants, vous allez voir.
00:03:49 :Là je fais un Streamlit,Run, et là je vais lancer mon main.Et là vous allez voir,j'ai bien ma page avec mon texte.Maintenant je pourrais très bien avoir,si je veux, un bouton.
00:04:05 :Je clique ici par exemple.Est-ce que ça me le recharge ?Voilà, et là j'ai un bouton, je peux cliquer ici.Bon là il n'y a pas d'action,mais j'ai bien mon bouton qui apparaît.
00:04:16 :Pour ceux qui ne connaissent pas Streamlit,Arsène, du coup, tu connaissais,je ne sais pas si les autres connaissaient.N'hésitez pas à m'interrompre,si jamais vous connaissez ou pas.
00:04:27 :Donc là par exemple, on va appeler ça,on va avoir notre quiz de culture générale.Et pour ça on va devoir lire notre fichier JSONpour aller chercher nos informations.
00:04:53 :Donc là je vais faire un petit fichier,on va l'appeler Utils par exemple.Et je vais m'en servir ici pour créer une fonctionpour pouvoir lire mon fichier JSON.
00:05:02 :Donc pour ça on va utiliser du coup JSON.Et je vais faire un load, fonction load JSONqui va prendre en paramètre le chemin du fichier.
00:05:15 :Et là c'est parti, pour ceux qui connaissent,on fait un withOpen, on utilise le chemin du fichier.On va le mettre en mode lecture.Et ici on va faire un return JSON.load.
00:05:35 :Si on allait parler au mentorat pour ceux qui font le Toza,mais là il n'y a personne qui fait le Toza je crois.Pour le Toza il y a load et loads.
00:05:45 :Bon là on va utiliser load parce qu'on charge un fichieret pas une chaîne de caractère.Donc load f.Donc là je retourne bien ici ma...
00:05:55 :Je vais bien retourner l'information que j'ai dans mon JSON.Donc ensuite...Hop là, j'ai fait une bêtise.C'est mon fichier.Donc mon fichier.Donc là je charge mon fichier, on va appeler file.
00:06:09 :J'aurais pu appeler data.On va bien sûr importer...C'est from utils, on va importer le JSON.Pourquoi il ne me le charge pas ?Ah, il importe, excusez-moi.
00:06:29 :Hop là.Je n'ai pas vu que j'avais mis...Hop là.Voilà, donc charge le fichier, load JSON.Et là ici le fichier c'est question.json.Il m'a trouvé.
00:06:43 :Donc maintenant on peut très bien faire un test.Je ne sais pas si je peux faire un write et des infos comme ça directement.Je pense que si, on va essayer.
00:06:51 :On va bien voir.Si je fais un...Stream.Leak.Run.Ouais, c'est ça, c'est bon.Donc là j'ai bien ici, je récupère bien dans mon fichier les questions.
00:07:07 :On ne peut pas les utiliser comme ça, mais c'est bon, ça fonctionne.J'ai bien ma petite fonction qui fonctionne.OK.Voilà.Maintenant, ce que je vais faire, c'est...
00:07:22 :On va vouloir récupérer en fait...On va devoir utiliser les sessions de Stream.leak.Je ne sais pas s'il y en a qui le font, qui connaissent.
00:07:35 :Mais en fait les sessions de Stream.leak,elles nous permettent en gros d'avoir des états qui vont être partagés.Pendant une session d'interapplication par exemple,on va pouvoir avoir un score de 1,et à la prochaine question on va avoir un score de 2,et ça, ça va être enregistré.
00:07:55 :Par exemple, je vais le faire...Je ne sais pas, en dessous du titre, ça paraît bizarre, mais là c'est bon.On peut le faire très bien.
00:08:02 :Donc, if score,not in note,in st.sessionState.Donc là on utilise la session.Donc si elle n'est pas dedans,on va faire st.sessionState.scoreDonc là on va créer l'attribut,it equals 0, on va avoir un score à 0.
00:08:27 :Donc là c'est pareil, on va faire if,on va placer pour avoir question index,ça permet de savoir si on est à la question 1, 2, 3, 4, ainsi de suite,vous allez voir.
00:08:43 :Donc là c'est pareil,not in st.sessionState.questionIndexqui est égal à 0.Et je me suis dit que ce serait bien d'avoir pareil pour les...tout ce qui est bonne réponse ou pas,avoir un feedback en fait,not in st.sessionState,
00:09:06 :et bien avoir du coup,cet attribut,feedback,pour l'instant elle donne.Et quand on aura une réponse qui sera donnée,soit elle sera bonne, soit elle sera fausse.
00:09:19 :Si elle sera bonne, on pourra mettre ici l'état,donc le feedback à correct.Voilà.Donc,je continue.Donc ce qu'on peut faire ici, c'est que par exemple,le but c'est que si,tant qu'on a des questions qu'on n'est pas arrivées au bout de nos questions,on va continuer à avoir des questions qui arrivent.
00:09:40 :Et dès qu'on est arrivée au bout, on va arrêter.Donc, justement, on va faire un sessionState,point, on va utiliser l'index des questions,et s'il est inférieur à la longueur du coup,du nombre de nos questions,et bien on va pouvoir continuer en fait à envoyer des questions.
00:09:58 :Je me dis que si jamais vous avez un doute,parce que là ça va, ok.Donc ma question ça va être quoi du coup ?
00:10:08 :On va récupérer chaque question,donc on va avoir notre fichier,qu'on a récupéré juste avant.On va prendre sessionState,point,questionIndex,et en fait en faisant ça du coup on va récupérer,et bien vu qu'on a une série à zéro,et bien en fait on va récupérer le premier élément,
00:10:30 :ce que nous on va avoir en liste,on va récupérer le premier élément,et ainsi de suite.On passe à la prochaine question,questionIndex qui va être à 1,on aura le deuxième élément,et ainsi de suite, ainsi de suite.
00:10:41 :Donc voilà.Donc maintenant on veut l'afficher la question.Alors je tiens à dire,là je le fais sous forme de script,je n'ai pas préparé une classe,c'est vraiment juste pour montrer Streamlit,ce qu'on peut faire avec.
00:10:54 :Mais tout ce que je vais faire après,c'est sûr que faudrait,je vais faire un repo,et l'idéal ce sera de le faire en classe,d'avoir une classe en fait,pour mieux organiser le code.
00:11:07 :Du coup, j'ai dit quoi ?Donc on va faire la question,donc là c'est question,st.sessionState,on va utiliser l'index,donc on va avoir .tp1,
00:11:21 :pour ne pas que ça fasse bête,comme ça on aura question1 pour la première,on va lui dire question0,et ici on va faire st.write,
00:11:35 :c'est bon,et ici du coup on aura,donc dans notre question,voilà, on récupère la question,et dans notre question,on veut l'afficher,on a dans notre variable question,dans notre bloc,on veut avoir la clé question.
00:11:54 :Donc ici je mets ma clé question,donc là c'est bien la question,et maintenant il faut afficherles différentes options qu'il y a à chaque fois,donc ici.
00:12:07 :Donc pour ça,il faut utiliser une boucle,donc pour chaque option,donc là après on va être dans chaque option,donc là on est bien,du coup ici on récupère les options,et on va boucler dessus,on va récupérer chaque élément avec option,et ici on va créer un bouton,
00:12:34 :donc st.Donc là,on va créer notre bouton,et dans notre bouton,on va écrire en fait le nom de la réponse,donc là on récupère bien à chaque fois le nom,enfin une réponse possible on va dire,des propositions plutôt,et donc si le bouton est cliqué,et donc si l'option qu'on a choisie,
00:12:57 :elle est égale à question,que je ne fasse pas de fautes,c'est ça correct,je crois que je l'ai appelé,je ne sais plus,correct,donc si c'est égal du coup à la bonne réponse,et là ce qu'on va faire,on va faire,donc là,session state,donc là on va utiliser notre feedback de tout à l'heure,
00:13:21 :et on va le passer à correct par exemple,ok,et du coup on a aussi notre score,qui va augmenter,donc là,hop, hop,le score,non on va l'écrimenter du coup,ça me paraît pas mal,et du coup il faut bien,qu'il faut que,notre question index,du coup,
00:13:53 :pareil on a écriment de 1,comme ça on peut passer à la première question,il faut savoir qu'avec Streamlit,il y a un truc qui est assez cool,en fait,alors c'est pas grave,c'était la meilleure option à faire,mais on peut faire à chaque fois des reruns,en fait pour,
00:14:10 :entre guillemets,relancer le script,mais ça garde en fait l'état de votre session,donc c'est vraiment pas mal,du coup on va relancer le script,et puis à chaque fois on va revenir,tac,et comme ça on passera à la prochaine question,donc là ce que je vais faire,
00:14:24 :c'est que je fais un ST.Rerun,voilà,et donc si,si on avait bon,par contre,si on a faux,enfin sinon plutôt,excusez-moi,et bien ST.SessionState,
00:14:44 :feedback,et bien on peut mettre,je sais pas par exemple,euh,voilà,on va mettre une,une string dedans,on va refonder le feedback carrément,la bonne réponse était,et puis là c'est pareil,on peut remettre notre réponse correcte,comme ça,vous m'arrêtez si je,j'ai fait quoi là,
00:15:10 :j'ai oublié de mettre un tac,vous m'arrêtez si c'est,si je vais trop vite,ou si je fais,si oui,une bêtise d'ailleurs,donc là c'est si j'ai faux,et du coup,là c'est pareil,l'index de la question,du coup je passe à la suivante,et par contre,mon score est le bon pas,
00:15:28 :mais par contre,le bon pas,donc je reçois un rerun,euh,donc voilà,donc là on est dans le cas,si,donc là on est toujours dans le bloc,ou si la,merde,si la,on n'est pas arrivé au bout,entre guillemets,si l'index de la question,il est insérieur à la longueur du fichier,
00:15:47 :mais là par contre,du coup,alors j'ai trop d'espace,j'aime pas ça,hop là,sinon,donc là on va pouvoir mettre notre else,bah ce qu'on va faire,c'est qu'on va faire un stpand write,hop là,on va écrire,terminé,pour l'utiliser,on va utiliser ça pour le terminer,
00:16:04 :on peut mettre,le score,alors pour le score du coup,whatstore,et,deux,allez je vous laisse,est-ce que,vous vous souvenez on a mis le score ou pas ?
00:16:25 :Faut en participer un peu quand même,dans quoi est enregistré le score ?C'est ça,c'est ça,score,et donc là,hop là,on met un peu notre score,et on peut l'améliorer,on peut le mettre par rapport à la longueur,au nombre de questions,si vous avez une idée,
00:17:01 :sachant que la longueur,le nombre de questions,je les ai récupérées.Ça va être l'end file ?Exactement,ça va marcher avec ça,ouais l'end c'est ça,je vois la réponse aussi dans le chat,je l'ai mis sous les yeux,merci du coup,et du coup,on peut faire,
00:17:23 :j'avais,ma version que j'avais faite hier soir,j'avais créé,un bouton,en fait j'avais fait,if,et j'avais mis un,rejouer,et en fait,si on cliquait sur le bouton à la fin,on pouvait recommencer la partie,alors ce que j'avais fait,c'est que,j'étais allé créer,une petite fonction ici,
00:17:50 :en utilisant Streamlit d'ailleurs,on va emporter Streamlit,hop,et là j'avais créé un reset,sans paramètre bien sûr,et en fait j'étais parti sur mes,session.score,
00:18:08 :en fait je remettais tout à 0 comme ça,peut-être que j'avais une question,l'index était égal à 0,session.score,session.gscore,l'index,et le feedback soit,et j'ai mis un non,et dans mon reset,en fait ce que je faisais,je faisais en fait mon rerun directement,donc en fait je mettais,
00:18:47 :l'état de ma session,de tout ce que j'ai créé en attribut,je le mettais à 0 ou à non,et je faisais à la fois un rerun,et donc,il m'emporte n'importe quoi,pardon,ça c'est la magie de PyCharm,et j'ai mon reset,ici,et là du coup,et là je peux faire mon reset,
00:19:12 :on va commencer pas trop mal je pense,on va faire un reset,je pense que je vais pouvoir essayer de le lancer,on va voir si j'ai rien oublié,ou j'avais un gros bug,alors,bon, on a déjà notre petit pouce qui s'affiche,ok, donc là ça vient,on va faire au hasard,
00:19:41 :je vais en mettre au hasard,hop,non c'était obsédé, je crois,hop,et donc ça me met bien ici,j'ai bien mon score qui s'affiche,et justement pour montrer un truc assez sympa avec Streamlit,en plus de ce qu'on peut faire,donc là on a tout géré ici,on va pouvoir utiliser,
00:20:08 :implémenter une sidebar en fait,assez facilement,donc par exemple,je vais le mettre peut-être en bas déjà,hop,en fait on peut faire un truc comme ça,ST pour,voilà, c'est ça,on peut écrire dans une sidebar,directement,quand j'arrive,on peut faire score actuel,et on avait dit ST pour session,
00:20:41 :score,comme ça on aura notre score au fur et à mesure,et pour l'instant ça me paraît pas mal,donc là si on lance,j'abonne,on va voir s'il y a sa fiche,je vais la monter,hop,et là j'ai bien mon score actuel qui s'affiche ici,la sidebar qu'on peut facilement replier,
00:21:03 :ok, donc là par exemple,pareil,bon j'ai mon score à 1,voilà,2,le plus grand scene du monde,c'est,on va s'amuser à faire après,je vais rien dire,et,ce qui peut être sympa aussi,c'est sur notre sidebar,donc là,sidebar,on peut aussi rajouter un bouton,
00:21:30 :donc là c'est pas bien organisé,bien sûr,c'est ce qu'on peut faire avec Streamlit,on peut très bien faire un recommencer,et,si vous vous souvenez,qu'est-ce que je peux mettre pour recommencer du coup ?
00:21:41 :C'est ça,Reset,hop là,et du coup,mon Reset,je l'utilise ici,et donc là maintenant,si je lance,tac,si j'en mets une,là j'ai bien un,et si je fais recommencer,voilà c'est bon,ça recommence,je pensais qu'il allait y avoir un bug,mais non.
00:22:14 :Ce qui peut être sympa aussi,ça peut être d'afficher par exemple,dans ma note sidebar,le feedback,par exemple,si vous vous souvenez,ici,si on avait bon le feedback,je le passais à correct,par contre,si on avait perdu,et si je l'affichais ici,est-ce que vous avez une idée
00:22:41 :de comment je peux l'afficher du coup dans la sidebar ?Pierre, j'ai pas compris,t'as dit la bonne réponse ?Après coup ?Non,je n'ai pas bien entendu la question.
00:23:02 :Sinon,ouais c'est ça,ouais c'est ça Pierre,du coup,c'est ce que Pierre disait,en fait,il faudrait afficher le résultatde la question précédente,si on a faux ou si on a bon,et en gros,afficher le résultat de la bonne réponsedans la sidebar.
00:23:20 :Et en fait,si vous vous souvenez,on a enregistré cette info-là icidans le feedback correct,sous forme de chaîne de caractère,et ici,c'est pareil,le feedback qu'on avait perdu,il est sous forme de chaîne de caractère.
00:23:43 :Donc,on peut très bien utiliser cet élément-là icipour l'afficher du coupdans notre sidebar.Alors,attendez que je réfléchisse un peu,est-ce que je peux faire un...
00:23:57 :il faut qu'on ait un feedback,sinon ça ne reste qu'à être planté.Donc,c'est un peu...donc on pourrait très bien faire un ifst...
00:24:11 :pour un feedback.Comme je le dis,c'est sans organisation de code.Après,si je vous filerais le repo,pour ceux qui veulent s'amuser,ils pourront faire carrément une classepour...
00:24:25 :il y a déjà moyen de fairepeut-être déjà 2-3 classes,2 classes,on ne peut pas abuser non plus,pour gérer les sessions,peut-être une pour gérer l'affichage des questions,même une troisième pour gérerle résultat,le score,les réponses à voir,peut-être 3 classes.
00:24:43 :Bon,c'est comme ça en regardant que je dis ça,mais bref.Là,le but c'est de montrer un peu Streamlit.Et donc,si jamais on a bien un feedback du coup,ensuite,if st...
00:24:54 :session state...feedback,si c'est correct,si on a peut-être la bonne réponse,et bien,on peut faire un...écrire sur la sidebaret avoir unsuccès.
00:25:09 :Donc ça,notre élément de...de...de Streamlit,ici,on va écrire notre...notre feedback.Et si...on a perdu,donc un f ça suffit,on passe...
00:25:23 :sinon,du coup,pas ici,c'est sinon,sidebar,si on peut faire un erreur,c'est ça,et...ici là,je vais acheter...je vais pouvoir mettre mon...
00:25:37 :feedback.On va tester ça,je ne suis pas sûr de moi à 100% là,mais on va bien voir.Déjà, ça se lance.Donc,si je lance...
00:25:52 :là, j'ai bien correct,on va en mettre...une mauvaise réponse, voir.C'est ça,et donc là, à gauche,je ne sais pas si vous voyez bien,excusez-moi.
00:26:01 :À gauche, j'ai bien ma mauvaise réponsequi s'affiche à chaque fois,donc là, par exemple,tac.Pas si c'était bon,mais si je mets la réponse françaisedans 1999,voilà,et j'ai bien la bonne réponsequi s'affiche à chaque fois.
00:26:13 :Et donc, c'est assez...c'est assez sympa,on peut s'amuser après.Moi, je sais qu'après,maintenant,je vais le faire tester à des gens,je vais m'amuser à changer les questions,c'est pas dur,vous envoyez votre fichier JSON,on peut l'envoyer à FGPT,ou à qui on veut,on peut dire,
00:26:31 :garde-moi la même structure,mais crée-moi plein de questions,et puis,c'est parti, quoi.Donc, voilà,ma petite découverte de Streamlit.Qu'est-ce que vous en pensez,déjà ?
00:26:43 :Merci.C'est vraiment sympa d'utiliser, ouais.Vas-y, vas-y, recelle, ouais.Déjà, comme tu l'as dit,c'est très simple à utiliser,et ce que j'aime sur Streamlit,c'est surtout la doc, hein,la doc qui est très bien faite aussi.
00:27:08 :Justement, ouais,j'ai l'air de partir dessus.Ah ouais, carrément.Ce qui m'embête un peu,quelques fois,tu te souviens de la sidebarque tu avais faite,du genre,quand tu cliques sur un bouton,ça te renvoie sur une autre page.
00:27:29 :C'est pas...Tu as fait comment ?C'est le même truc, carrément.Comment on fait pour avoirplusieurs pages dans notre application ?Exactement.Attends, je vais essayerde trouver un truc...
00:27:42 :Ouais, bon,on peut se le faire rapidement,si tu veux dire.Peut-être m'intéresser tout le monde,si les autres veulent essayer aussi.Faut que j'aille sur mon repo.
00:27:50 :Je crois que j'avais un repooù je faisais ça.Pas forcément sur un repo,mais c'est...En fait,on va mieux faire mieux.On va aller sur la doc.
00:28:03 :On va aller sur la doc.On va faire un rerun,mais on s'en fiche.Et je crois que c'est...Ils appellent ça le multi-pagele caching.
00:28:16 :Alors, ouais,ça c'est bien.Bon, ils disent que c'est avancé,mais ça,je viens de l'utiliser,comme vous pouvez le voir,et je n'ai rien fait de fou.
00:28:24 :Mais c'est pratique.On peut utiliser les connexions.On va taper multi...Screamleet.Et là,c'est bien,c'est bien.Multi-page 3,ça devrait sortir peut-être.Ouais,ça doit être ça.
00:28:46 :Ça doit être ça.Ouais,toMultipleHype.Ouais,il faut configurer la pale.Ok,ça c'est bien,c'est passé.Ouais,il crée ses fichiers ici,d'accord.Et ensuite,il fait comment ?
00:29:08 :Alors,attendez que je me souvienne.Je vais aller sur un repo à moi.Je vais sur un repo à moi.Ça sera plus simple.Tac.
00:29:22 :Alors,je m'étais créé une boîte à outilspour le boulot,et je l'avais fait,c'est ça.Et je crois que c'est ça.C'est ça.Et je crois que je l'avais fait,c'est ça.
00:29:40 :En fait,il faut,donc ici,on va créer un dossier.Je crois que c'est tout simplement ça,en fait.Créer un dossier page.Et ici,par exemple,sur notre dossier page,on va faire,je ne sais pas,un fichier,on va l'appeler1,bon,on va pas s'y remettre,
00:30:04 :genre,page 1,mince,on va pas faire ça.Hop là.Et on va faire 2,page 2.Et,oh là là,ça bug.Hop là.
00:30:24 :J'ai des ralentissements,j'ai trop de trucs ouvert.Je vois pas si j'ai des questions,j'ai pas le chat ouvert,excusez-moi,je regarde.C'est bon.Là,du coup,on va remporterStreamlit.
00:30:37 :Et,on va,je crois que c'est 7 pages,on va faire un st,ouais,je crois que c'est 7 pages,page config,j'ai plus eu un délire comme ça.
00:30:47 :C'est ça,7 pages config,ici.Donc,on va donner un titre à notre page,on va l'appelerpage 1.Et puis,si vous voulez,enfin,vous pouvez même faire un truc,à votre page.
00:31:03 :Ici,vous mettez genre un émoticôneet ça rend un petit truc sympa.Hop,on va faire pareil sur la page 2.J'espère que ça va fonctionner.
00:31:11 :Hop,et maintenant,si je lance,on va voir si ça fonctionne.Run.Main.Il s'est lancé où ?Il est là.Euh,tac.Et voilà.
00:31:28 :Ici,j'ai mis un petit menu qui s'est ouvert avec,ah,j'ai pas écrit dedans,excusez-moi.Alors,attendez.On peut faire un titre ici.Donc là,on est dans lapage 2.
00:31:42 :Hop.Hop.Tac.On va relancer.Donc là,je suis sur la page principale.Run de notre quiz.Et hop,j'ai bien la page 1et là,j'ai bien la page 2.
00:31:58 :Et donc,j'ai bien réussi à faireune application multi-pages avec,euh,avec Streamlitde cette façon,du coup.Donc,juste,ouais,voilà.Donc,en fait,il y a juste à,à,à prévoir ici un dossier pages,pages.
00:32:17 :Créer ces pages.Et puis après,euh,bon,bah,moi,j'ai pris l'habitude.Je ne sais pas si c'est obligatoire.Vous me demandez ce que c'est.
00:32:26 :Peut-être.Faut regarder.Et quand tu fais plusieurs pages comme c'est Streamlit,t'as peut-être pages config avec un titre.Et,oui,il faut parce que,euh,ça peut être sympa.
00:32:35 :Parce qu'en plus,quand tu fais un,quand t'as un attribut page icône,ça peut être sympa.Tu peux mettre des trucs cools et,euh,ça va apparaître sur ton menu.
00:32:43 :Je l'avais fait,moi,sur une application.Et,ça rendait plutôt bien et,euh,quand je disais aux gens,j'ai fait ça sans CSS,sans HTML,juste un petit temps,ils m'ont dit,mais non,mais c'est construit aussi.
00:32:56 :Donc,voilà.Donc,c'était une petite découverte de,hop là,je le remets,excusez-moi.Vas-y,Arnaud.Oui,euh,deux petites questions.Merci déjà pour,pour la présentation.
00:33:10 :Ouais.Alors,vraiment sympa,effectivement,pour des petites zap,des,des FAQ,des,des boîtes à outils,comme tu disais.Euh,moi,j'ai deux petites questions.
00:33:23 :Une question de compréhension sur le session state,si j'ai bien compris.Donc,tu vas créer les attributs un peu à la volée.Ouais.Tu les appelles comme tu veux,tu les types comme tu veux,et,oui.
00:33:32 :Et voilà,quoi.Et après,tu t'en ressers à,à la demande,quoi.C'est ça,ouais.Et en gros,dès que tu,tu quittes ton navigateur,tu quittes ta session,en fait,et bah,c'est réinitialisé.
00:33:47 :D'accord.Ok.Super.Et euh,c'est,c'est pratique,ouais.Alors,vas-y.Oui, pardon.Vas-y, vas-y.Non, non,je pensais que t'allais me poser la question,euh,si,si je l'avais déjà fait avec des utilisateursou une base de données,mais...
00:34:06 :Ah,non,j'étais pas,j'étais pas encore là.J'étais plus sur le côté,euh,esthétique,justement,parce que tu parlais de fairesans HTML,sans CSS.
00:34:17 :Voilà.Euh,je voulais juste savoir si,si ça permettait un peu de personnalisation ou pas.Oui.Oui,euh,ben,on va le faire rapidement,en ce moment-là.
00:34:28 :Il faut juste que j'ouvre ma session,ma session,et ça on verra après.Euh,je vais rouvrir une session Chromeavec mon autre compte.Tac.
00:34:35 :C'est celle-là.Attends,non,c'est galère,c'est une horreur,c'est bon.Je vais juste rouvrir,euh,mon,mon PageCharm.Je vais rouvrir mon,mon,mon,mon,mon,mon,mon,mon,mon,mon,mon,mon,mon,mon,mon,mon,mon,mon,mon,mon.
00:35:05 :Et voilà.Hop.Et en fait,il est possible de faire ça,euh,en gros,euh,ici,donc là,on va aller à la racine,on va faire un,un dossier qu'on va appeler .streamlit.
00:37:59 :C'est un peu...C'est un peuMaintenant, je vais relancerpour voir les modificationsJe vais appeler mainQui s'est lancé où ?
00:38:24 :Je trouve que làEt voilaLes modifications que j'ai faitesVoilà, même les boutons sont plein de couleursJ'espère que du coupJ'ai répondu à ta questionTout à fait, merciJe suis resté basiqueDonc voilà, il n'y a pas de petite chose comme ça, mettre des confits de tomelle
00:38:54 :Comme je te disais, les secrets de tomelleHeu...En plus, aprèsBon, je ne vais pasPas trop continuer trop tard parce queOn ne va pas s'arrêter, extremelyVous trouvez la blindeMais la blinde de librairie en fait, qui va avec StreamlitLa connexion, je crois que c'est inclus dedans
00:39:17 :Pour se connecter à des bases zonées, des trucs dans le genre, je croisOuais, mais je ne sais plus ce que j'ai trouvé StreamlitC'est pas genre un truc login ou...
00:39:28 :Non, ça c'est pour se connecter dessusJe ne sais plus, par exemple, il y avait une librairieIl y en a pas mal, ouais, c'est l'authenticator peut-êtreJe ne sais plus laquelle j'ai trouvéOuais, il y en a qui ont déjà fait des librairies comme çaStreamlit AuthenticatorJe n'ai jamais essayé, mais un jour je pense que je vais me faire un petit délire
00:39:50 :De me faire une app complète avec çaCe que j'aime bien, et genre, une que j'ai bien aimé une fois, Streamlit CanvasJe crois que c'est çaOuais, je crois que c'est çaOn va se l'installer à l'arrache comme ça, c'est pas graveOn va finir par çaOn va utiliser Blastcode là
00:40:21 :On va copier son code de démoOn va le mettre sur la page 1Je ne sais pas si ça va marcher comme çaJe pense qu'il a tout prévu le mecOn va essayer si ça fonctionneMais ouais, il y a un bon écosystème dessusOuais, bon, ça marche moyen
00:40:48 :Mais c'est parce que j'ai mis mes couleurs qui cachent toutJe vais les dégager mes couleursPour l'instantHopVoilàEt normalement, genreOn peut envoyer des fichiers ici, je ne sais plus comment on faitJe peux dessiner en rougeJe mets des pointsAh ouais, là il met carrément des points et il ajoute un tableau au fur et à mesure
00:41:18 :Mais en fait, en gros, vous pouvez faire des trucs pour dessinerDonc là ça me met lesLes positions que j'ai apparemmentMais bref, vous voyez, c'est hyper réactifJ'ai la taille, la couleurBon là, ce que je fais c'est pas très utile, les points, on peut mettre des lignes
00:41:40 :Enfin bref, on peut facilement s'y afficher desDesSposiles SQL, je ne sais plus, mais ouais, il peut se connecterIls ont prévu ce qu'il faut normalement en connexionJe sais qu'à une époque c'était en expérimental, mais je crois que maintenant c'est bonSQL ici par exemple, mais ouais, je pense que c'est possible avec du postgreSQL
00:42:09 :Si vous regardez, j'ai streamé les connexionsOuais, voilà, bon brefC'est tout faitEt j'allais dire un truc avant, je ne sais plusPar exemple, pareil, si vous voulez partirSur de la DataFrame pour afficher des tableaux, si vous bossez par exemple avec PandaC'est hyper bien foutuEt voilà, par exemple, là ils ont mis un exemple en direct, vous avez votre tableau qui s'affiche
00:42:38 :Donc voilà, je vais m'arrêter là, parce que comme vous le voyez, il y a plein de trucsDes inputsDesDes médias à la mainPlein de vidéos, et j'ai même réussi à faire tourner ma webcam avecJe ne sais plus oùJe ne sais plus où, mais il y a moyen de
00:43:03 :De faire tourner sa webcam pour la regarder, je ne sais plus où c'est la meilleureOuais, des statues, des chatsAh, des chats, ouaisAvec des inputsOkOk, vous voyez, je me fais gaffeOn peut avoir son type de chat, carrémentDonc voilà, allez voir la doc, franchement, elle est assez énorme
00:43:34 :Donc voilàEt j'espère que ça vous a pluMerci, c'est sympaC'est sympaDe rien, c'est normalEt pour la petite info, si ça peut vous servirAu boulot, si vous faites du PythonSi vous avez l'occasion d'en faire, moi je sais que j'ai mon boulot le soir de dev
00:43:59 :Et la journée je suis dans le commerceSi vous faites des scripts, parce que moi j'avais fait des scriptsDes scripts pour le boulot d'automatisation, des choses dans le genre, et pour les rendreLes gens autonomesJ'avais justement créé une application StreamlitOù en fait je faisais une interface autour de mon
00:44:15 :De mes projets d'automatisation, et en gros les gens, ils avaient juste à faire des inputsComme çaOù ils faisaient un downloadIls avaient juste leur fichier à envoyerEt ça leur traitait toutÇa leur faisait le traitement pour euxEt en gros après il y a un bouton qui apparaissait en dessous, télécharger
00:44:34 :Ils retéléchargeaient leur fichier travaillé en faitMais c'est pour ça que je vous donne des idées, mais franchement n'hésitez pas à utiliser StreamlitC'est un truc de maladeSachant que vous ne l'avez peut-être pas remarquéMais quand vous lancezStreamlitMoi par exemple, là ici j'ai mon localhost, mais tous
00:44:53 :Les magasinsDe mon boulot, donc ceux qui sont à 100 km de chez moi, voir plusEt bien ils ont accès à mon application que je lance grâce ici à l'URL NetworkQui est lancée automatiquement par StreamlitVoilàOn va finir par cette petite touche finale qui est bien sympathique
00:45:10 :Et donc voilàVas-y Arcel ouaisSinon, le Montaura sera disponible sur Tangit ?Ah oui, le petit truc deL'application de culture généraleOui bien sûr, pour vous faire un peu de pratiqueJe vais l'envoyer de toute façon sur leSur le Discord, il y aura leL'exercice de culture générale que j'ai fait
Aucune occurrence trouvée pour « ».