- Formations
- conversion_path Parcours & Formations
- science Projets
- data_object Exercices de code
- psychology Exercices IA
- quiz Quiz
- Articles
- rss_feed Blog
- sort_by_alpha Glossaire
- menu_book Guides
- help_center FAQ
- media_link Ressources
- Communauté
- groups La communauté
- forum Questions
- live_tv Mentorats
- science Projets mensuels
- Formations
- conversion_path Parcours & Formations
- science Projets
- data_object Exercices de code
- psychology Exercices IA
- quiz Quiz
- Articles
- rss_feed Blog
- sort_by_alpha Glossaire
- menu_book Guides
- help_center FAQ
- media_link Ressources
- Communauté
- groups La communauté
- forum Questions
- live_tv Mentorats
- science Projets mensuels
Deviens membre Premium magic_button
Débloque cette session en devenant Membre Premium 🚀
Inscris-toi
(c'est gratuit !)
Un compte est nécessaire pour participer aux discussions.
Créer un compte person00:00:00 :Dans cette partie on va s'attaquer à la méthode qui va nous permettre de sauvegarder le contenu dela note. Donc la première chose qu'on va devoir faire c'est récupérer la note qui est sélectionnée
00:00:09 :et ça devrait vous rappeler quelque chose puisque on l'a déjà fait ici dans cette méthode deleteselected note. Donc on va avoir les mêmes quatre lignes de code ici donc là encore on pourrait
00:00:17 :faire un copier-coller mais si vous vous souvenez dans la partie précédente où on avait fait unrefactoring donc ce qui nous avait permis d'extraire ces lignes de code, de les mettre dans une autreméthode et d'appeler cette méthode aux deux endroits et bien on va faire la même chose ici.
00:00:30 :Alors malheureusement il y a un petit bug dans PyCharm, je voulais vous montrer la façon defaire en cliquant directement sur refactor ici. Vous allez voir qu'on a un menu extract qui nous
00:00:39 :permet normalement avec les lignes de code sélectionnées automatiquement de les extrairedans une nouvelle méthode. Donc ça marche la plupart du temps sauf, et c'est un bug connu
00:00:48 :qui n'a pas encore été corrigé, sauf quand on a ajouté le dossier comme on l'a fait dans lesparties de setup ici à l'intérieur de notre interprèteur. Donc là vous voyez c'est marqué
00:00:57 :library root, c'est parce que dans le projet dans les préférences, si vous vous souvenez bien icidans le show all, on avait ajouté, donc si je mets les pattes ici, on avait ajouté ici le dossiermain python pour pouvoir avoir l'autocomplétion et que donc ce dossier soit reconnu par notre
00:01:13 :interprèteur. Malheureusement donc ça cause un problème et ça fait que si j'essaye de faire unrefactor, donc extract method, on va avoir cette erreur ici qui nous dit qu'il ne peut pas faire unrefactoring. Donc c'est problématique, c'est une erreur d'EmpyCharm qui j'espère sera prochainement
00:01:27 :réglée. Pour l'instant on ne peut pas le faire donc on va tout simplement passer par un couperet un coller qu'on va mettre donc dans une nouvelle méthode. Donc la méthode on va l'appeler get,
00:01:36 :donc get donc hop ici, on va la mettre juste après, donc là encore on respecte l'ordrealphabétique, donc get selected list object item. Donc je vais l'appeler comme ça et je vais coller
00:01:48 :les notes et je vais coller tout ce code ici. Et donc ce qu'on veut faire c'est retourner l'itemqui est sélectionné, donc là je vais tout simplement enlever cette assignation de variablepuisque je ne vais pas la réutiliser plus loin dans cette méthode et je vais tout simplementfaire un return ici de selected items. On pourrait même faire un petit peu plus simple, c'est à dire
00:02:06 :enlever le note ici, donc inverser cette structure conditionnelle et à la place de retourner falsesi rien n'est sélectionné, et bien on va vérifier si quelque chose est sélectionné et si il estsélectionné et bien on retourne l'élément, donc le premier élément de cette liste. Donc voilà ça
00:02:21 :fait trois lignes de code au lieu de quatre, on essaye d'optimiser au maximum. Je vais devoirrécupérer là également donc l'item qui est sélectionné puisque pour l'instant on a enlevéles lignes de code mais là on a une erreur puisque maintenant selected item n'est défini nulle part àl'intérieur de ma méthode, donc je vais appeler cette méthode et je vais dire donc que selected
00:02:39 :item est égal à self.get selected list object item. Donc comme ça on va récupérer l'élémentqui est sélectionné quand on veut supprimer la note et on va pouvoir faire la même chose iciquand on veut sauvegarder la note. Donc je vais faire selected item égal self.get selected list
00:02:55 :object item. Donc là encore un refactoring qui est proprement fait et qui nous permet de récupérerl'élément sélectionné dans différentes méthodes, donc là dans la méthode delete et dans la méthodesave. Donc ensuite on va sauvegarder la note, donc on va vérifier avant si on a bien quelque chose,
00:03:11 :alors là en fait on pourrait faire autre chose puisque ici j'ai fait une structure conditionnellesi quelque chose est sélectionné mais si ce n'est pas le cas pour l'instant on n'a pas de else. Donc
00:03:19 :ce que je vais faire c'est mettre un return ici et mettre return none au cas où on n'ait aucunenote qui soit sélectionnée. Donc si on n'a rien qui est sélectionné ça va retourner none ici et
00:03:28 :du coup on ne pourra pas continuer. Donc là je vais refaire une petite structure conditionnellepour vérifier qu'on a bien un élément de sélectionné. Donc je vais dire if selected item donc
00:03:37 :si on a un élément qui est sélectionné et bien on va dans ce cas-ci supprimer la note et dans lecas de save ici sauvegarder la note. Donc là on va faire pareil if selected item et on va continuer
00:03:47 :avec la logique de notre script ici. Donc c'est quand même assez important puisque ici il fautbien gérer tous les cas de figure. Alors si on a un objet de sélectionné on va pouvoir le sauvegarder
00:03:56 :et donc pour le sauvegarder vous vous rappelez qu'on a toujours notre note qui est attachée aulist object item donc dans l'attribut note et on va pouvoir le sauvegarder en utilisant la méthodesave. On va également en fait modifier auparavant le contenu de notre note puisque pour l'instant on
00:04:12 :fait juste sauvegarder la note mais le contenu de la note on ne l'a pas récupéré. Donc il fautdéjà récupérer ce qui est écrit à l'intérieur du texte edit. Pour ça on va utiliser donc self.te
00:04:22 :contenu qui correspond au widget de notre texte edit et on va utiliser la méthode to plain textqui me permet de récupérer le texte qui est contenu à l'intérieur de mon cue text edit. Donc ça ça va
00:04:34 :me récupérer le texte et on va le sauvegarder dans notre note dans l'attribut content. Doncon va faire selected item.not.content égale self.te contenu.to plain text. Donc ça c'est notre texte
00:04:48 :et on le sauvegarde dans l'attribut content de notre note. Donc quand on fait ça si vous voussouvenez bien ça va aller automatiquement utiliser notre propriété donc notre propriété setter ici.
00:04:58 :On va avoir la vérification qui se fait pour vérifier qu'on entre bien du texte et si jamaison entre autre chose que du texte et bien ici on aurait le type error qui serait levé pour nousdire que la valeur est invalide. Donc pas de panique dans le cue texte edit même si on entre
00:05:11 :des nombres ça sera toujours reconnu comme des chaînes de caractère donc on n'aura pas d'erreursi jamais vous entrez 1 2 3 4 5 ça va être 1 2 3 4 5 mais sous forme de chaîne de caractère. Donc
00:05:21 :on n'aura pas d'erreur possible. Donc on sauvegarde le contenu dans cet attribut content et ensuite onsauvegarde la note sur le disque. Donc on va vérifier que ça fonctionne bien on va lancer
00:05:30 :notre application on va créer une note donc je vais l'appeler test note j'appuie sur entrée pourvalider je clique sur cette note pour l'instant on n'a rien qui se charge puisque on n'a pas faitencore la méthode qui permet de charger le contenu de la note par contre je vais dans mon texte
00:05:44 :edit ici écrire quelque chose donc je vais écrire ceci est du contenu on n'a aucun feedback pourl'instant donc on ne voit rien ici dans le save note j'ai juste sauvegardé la note mais je n'aipas mis de print ou quoi que ce soit donc on n'est pas sûr si ça a fonctionné on pense que ça a
00:05:58 :fonctionné et pour vérifier je vais aller ouvrir donc mon dossier notes donc je vais naviguer àl'intérieur de ce dossier et je vais ouvrir la note dans texte edit donc si dans texte edit ona le contenu voilà ici ça veut dire que ça a fonctionné je vais pouvoir essayer de vérifier
00:06:12 :si ça marche de façon interactive en modifiant le contenu ici donc je vais modifier ici la noteet je vais revenir à l'intérieur de mon texte edit et là vous voyez que ça ne marche pas puisque lefichier est locked puisque on l'a ouvert dans texte edit donc il faut absolument que je ferme ce fichier
00:06:27 :je vais essayer de remodifier cette note et cette fois ci de la rouvrir dans texte edit etnormalement le texte devrait être actualisé voilà donc on a bien le contenu qui contientmaintenant uniquement le mot ceci puisque c'est ce qu'on avait ici à l'intérieur de notreapplication donc ça fonctionne parfaitement dès qu'on modifie ici le texte donc si je modifie
00:06:46 :ce texte texte modifié etc on a bien le texte qui est enregistré automatiquement dans notre notedans le fichier json ici et vous voyez que c'est assez rapide on n'a pas de lag là je peux écrirebonjour tout le monde vous voyez que ça marche très rapidement donc il fait beaucoup de sauvegarde
Ce n'est pas fini...
✋
Tu as complété % du parcours 🔥
Termine l'intégralité de la formation pour pouvoir débloquer ton attestation de réussite.