- 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 créer la méthode qui va nous permettre d'ajouter une tâche.On va la créer et ensuite on va ajouter la connexion entre le bouton Add et cette méthode.
00:00:10 :La méthode, on va l'appeler AddTask.Pour l'instant, je vais mettre Pass à l'intérieur.La méthode existe et ça va me permettre de la connecter.Je vais faire self.boutonAdd.click.connect et on va connecter ça à AddTask.
00:00:25 :On va également importer depuis notre API la méthode qui nous permet de créer une tâche.Alors là, il faut faire très attention puisque si on fait from package.api.task import AddTask,
00:00:37 :là on va se retrouver avec un conflit puisqu'on importe directement la fonction et la fonction s'appelle AddTasket c'est assez risqué puisque même s'il a AddTask, ses contenus dans notre instance,je n'aime pas personnellement avoir des choses qui s'appellent de la même façon quand on importe quelque chose qui vient de l'API.
00:00:54 :En plus, en important directement la fonction, ce n'est pas forcément très clair à l'intérieur de notre programmequand est-ce qu'on va faire référence à la fonction et quand on va faire référence à notre méthode.
00:01:05 :Même si on aura le self devant pour bien comprendre que là c'est la méthode, ça ajoute de la confusion je trouve.Donc ce que je préfère faire dans ce cas-ci, c'est importer directement l'API comme ceci,donc faire import package.api.task et on va mettre le chemin complet vers la fonction.
00:01:20 :Il y a quelque chose qui dit en Python qu'il vaut mieux être explicite que implicite,donc là c'est une bonne façon de le montrer, plutôt que d'avoir juste le nom de la fonction,ce qui est sûr et plus rapide à taper, on va mettre le chemin complet vers la fonction à partir du module.
00:01:34 :Dans ce cas-ci, plutôt que de faire AddTask pour ajouter une tâche, on va faire package.api.task.AddTask.Forcément c'est un peu plus long à taper, mais en même temps, cette fonction on l'utilise une seule fois dans notre script,donc c'est pas comme si c'était une fonction qu'on utilise des centaines de fois et que c'est long à taper à chaque fois,
00:01:58 :Puisque si on mettait juste ça comme ça, vous voyez là avec les deux noms, avec le nom de la méthode et le nom de la fonction,et bien ça commence à devenir un peu confus.
00:02:05 :Donc ce que je vais faire ici à l'intérieur de cette tâche, c'est créer ce qu'on appelle un QInputDialog.On l'avait déjà fait je crois dans la première application quand on a fait Pynote, qui nous permettait d'ajouter des notes,donc en fait c'est un dialogue dans lequel je vais pouvoir rentrer du texte, et le texte ça va être tout simplement dans ce cas-ci le nom de la tâche.
00:02:22 :Donc on va créer deux variables, taskName et une autre variable que je vais appeler OK.La première variable ici va récupérer le texte que l'on entre à l'intérieur du InputDialog,et la deuxième variable OK ici va récupérer si oui ou non on a validé le InputDialog,puisqu'on pourrait très bien finalement se raviser et décider de fermer le dialogue et de ne pas entrer de texte.
00:02:42 :Donc il faut faire attention de bien récupérer cet événement de l'utilisateur,pour que s'il décide finalement de fermer le dialogue, et bien on n'ajoute pas la tâche.
00:02:50 :Donc on va dire taskName, OK, égale QtWidget.QInputDialog,et on va utiliser la méthode GetText qui nous permet de récupérer donc directement du texte.On va parenter ça à notre QWidget, donc le premier argument qu'on va passer c'est self,le deuxième argument qu'on va passer c'est le titre de la fenêtre, donc on va mettre ajouter une tâche tout simplement,
00:03:11 :et le troisième paramètre qu'on va passer ça va être le texte qui va être affiché à l'intérieur de la fenêtre.Donc là on va mettre contenu de la tâche avec deux points comme ceci pour indiquer que l'on veut entrer le contenu de la tâche après.
00:03:30 :Et ensuite on va vérifier donc à la fois si OK a été validé, donc si OK est égal à True,et également si taskName contient au moins quelque chose, puisqu'on pourrait avoir un utilisateur qui ne rentre rien,qui rentre une tâche avec aucun nom, et dans ce cas-ci on ne veut pas ajouter, on ne veut pas avoir une tâche qui ne contient pas de nom.
00:03:48 :Donc on va vérifier ces deux conditions en faisant if OK and taskName.Donc si c'est le cas, si les deux sont à True, donc si OK est à True et si taskName contient au moins un caractère,eh bien on va continuer et créer notre tâche.
00:04:00 :Donc on va faire package.api.task.addTask, donc la fameuse fonction qu'on a récupérée tout à l'heure en faisant l'import,et on va dire que le nom de la tâche est égal à taskName.
00:04:11 :Donc taskName c'est le nom qu'on a récupéré depuis le input dialogue.Et ensuite qu'est-ce qu'on va faire ? Eh bien tout simplement faire un self.lwTask.addItem pour ajouter notre tâche à l'intérieur de notre liste object item.
00:04:23 :Donc ça c'est la partie API, on crée notre tâche et automatiquement en utilisant cette méthode,si je fais pomme B pour me rendre à l'intérieur de cette méthode, on fait le writeTaskToDisk à la fin,donc automatiquement en utilisant cette fonction, eh bien on écrit les tâches dans le disque dur.
00:04:37 :Donc après ce qu'il reste à faire c'est tout simplement d'ajouter cette tâche, donc le nom de la tâche, à l'intérieur de notre liste.Donc je vais lancer mon application et on va vérifier que ça fonctionne.
00:04:46 :Donc je clique sur Add, le QInputDialog apparaît, on a bien le titre ici, ajouter une tâche, nom de la tâche, deux points,donc là je vais mettre Apprendre Python, on appuie sur OK et automatiquement la tâche s'ajoute.
00:04:57 :Je vais essayer d'entrer une tâche déjà qui n'a pas de nom, on va faire OK et on va vérifier que là ça ne fonctionne pas,donc c'est bien le cas puisque dans ce cas-ci il faut à la fois qu'on valide et que la tâche ait un nom.
00:05:08 :Et on va essayer autre chose, donc on va essayer de mettre cette fois-ci, je ne sais pas, faire ses devoirs.Et par contre on va cliquer sur Cancel et là également on a donc OK qui est égal à Falsepuisque on n'a pas confirmé le QInputDialog et donc dans ce cas-ci également on n'ajoute pas la tâche dans notre liste.
00:05:24 :Donc ça fonctionne, on a tous les 4 figures qui sont gérées et on arrive à ajouter une tâche.Pour l'instant le problème c'est que si je relance mon application, la tâche que j'ai ajoutée n'apparaît paspuisque forcément quand on lance l'application on fait juste créer le listewidget,mais on n'a pas encore de méthode qui nous permet d'aller récupérer les tâches et de les afficher à l'intérieur de ce listewidget.
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.