- 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 voir comment faire la logique de notre application et notammentcomment connecter les signaux des widgets à des opérations qui vont nous permettred'ajouter et de supprimer des tâches.
00:00:10 :Donc pour l'instant j'ai juste l'interface ici avec les différents widgets mais il nese passe rien quand je mets quelque chose ici et que j'appuie sur entrée ou quandje clique sur le bouton rien ne se passe.
00:00:19 :Donc la première chose qu'on va faire c'est connecter notre line edit pour pouvoir ajouterune tâche quand on appuie sur la touche entrée.Donc on va prendre notre line edit et le nom du signal qui va nous permettre d'effectuercette opération c'est returnPressed donc ça vous pouvez le trouver dans la documentation.
00:00:34 :Return qu'est-ce que c'est en fait c'est le nom anglais pour la touche entrée etdonc quand on va appuyer sur la touche entrée et bien ce signal va être déclenché.
00:00:42 :Donc on va le connecter à une méthode que l'on n'a pas encore créée et qu'onva donc créer tout de suite qu'on va appeler tout simplement addToDo.
00:00:49 :On met le self, on n'oublie pas puisque on est à l'intérieur de notre classe etpour l'instant je vais juste mettre un print pour m'assurer que ça fonctionne.
00:00:56 :On va dire juste bonjour ici et je vais connecter donc ce signal returnPressed à cette méthode.Donc on va faire self.addToDo, là encore bien faire attention de ne pas mettre les
00:01:05 :parenthèses on veut juste connecter la méthode et non pas l'appeler.Donc je sauvegarde, je lance le script et on va vérifier que si j'appuie sur entréeici j'ai bien le bonjour qui s'affiche.
00:01:14 :Donc ça marche parfaitement j'appuie sur la touche entrée, si je mets n'importequoi d'autre ou que j'appuie sur n'importe quelle autre touche le signal n'est pas déclenché,c'est vraiment uniquement quand on appuie sur la touche entrée.
00:01:23 :Qu'est ce qu'on va faire ici dans le addToDo et bien on va ajouter un élément dans notreliste widget.Donc pour ça on va utiliser la méthode addItem qui me permet d'ajouter un élément.
00:01:33 :Cette méthode on va lui passer du texte, on peut lui passer également vous voyez ici unQueueListWidgetItem qui est un élément que l'on peut ajouter dans un QueueListWidget.
00:01:42 :On n'est pas obligé de créer un item, on peut le faire si on a besoin d'utiliser desopérations un peu plus avancées si on veut par exemple modifier l'élément que l'onsouhaite ajouter dans la liste pour changer sa police d'écriture, sa couleur etc.
00:01:53 :Là on pourrait passer par un QueueListWidgetItem pour avoir ces possibilités.Dans notre cas on va juste ajouter du texte donc on peut passer directement une chaînede caractère.
00:02:01 :La chaîne de caractère qu'on va utiliser c'est la chaîne de caractère que l'on atapé dans notre lineEdit.Donc pour ça il va falloir récupérer le texte qui se trouve dans le lineEdit.
00:02:10 :Pour ça on utilise tout simplement la méthode texte en ciblant donc notre lineEdit doncself.lineEditTaskTitle.text tout simplement.On retrouve les éléments de setter et de getter, si on veut changer le texte on vautiliser setText comme ceci en n'oubliant pas la majuscule sur le T et si on souhaite
00:02:28 :récupérer l'élément et bien on met tout simplement le nom de la propriété qu'onsouhaite récupérer.Bien sûr là encore suivi des parenthèses puisque c'est une méthode et non pas unepropriété donc on appelle cette méthode texte pour récupérer le texte qui est présentdans le lineEdit.
00:02:42 :Donc là pour le coup il faut bien mettre les parenthèses puisque si on ne met pasles parenthèses et bien on va juste indiquer qu'on souhaite ajouter la méthode et çane va pas faire grand chose puisque ce n'est pas la méthode qu'on veut mais nous c'estbien le texte qui est contenu dans le lineEdit.
00:02:54 :Donc je mets les parenthèses pour récupérer les informations et les ajouter dans la listedes to-do.Donc si je sauvegarde et que je lance le script cette fois-ci quand je vais indiquer quelquechose ici par exemple apprendre piton et que j'appuie sur entrée on a bien cettetâche qui est rajoutée.
00:03:08 :Ce que je vais faire également c'est enlever le texte qui est dans le lineEdit une foisque je l'ai ajouté puisque pour l'instant on a toujours le texte qui est affiché sij'appuie de nouveau sur entrée vous voyez que ça va continuer d'ajouter cette tâche.
00:03:19 :Donc ce que je vais faire c'est après l'ajout faire tout simplement un self.lineEditTaskTitle.clearpour supprimer tout le texte qui se trouve dans le lineEdit.Donc si je relance l'application cette fois-ci si je fais apprendre piton j'appuie sur latouche entrée ça va ajouter l'élément et ça va supprimer tout ce qui était dans
00:03:37 :le lineEdit.Donc ça c'est pour l'ajout du to-do et ensuite on va connecter le bouton pour pouvoir supprimertous les éléments de la liste.Donc pour ça on va utiliser le signal clict de mon bouton donc bouton clear.clict.connect
00:03:51 :et on va tout simplement connecter ce signal à la méthode clear de mon listWidget doncself.listWidgetToDo.clear là encore je ne mets pas les parenthèses et donc là quand
00:04:01 :on va cliquer sur le bouton ça va appeler cette méthode clear du listWidget et ainsisupprimer tout ce qui se trouve dans la liste.Donc si je relance et que je mets différentes tâches on va dire par exemple apprendre piton,apprendre javascript et apprendre php.
00:04:14 :Donc j'ajoute ces trois tâches et maintenant quand je clique sur tout supprimer ça vasupprimer tout ce qui est à l'intérieur du listWidget.Donc on a presque fini la dernière chose qu'il faut rajouter c'est la possibilitéde double cliquer sur un élément de la liste pour le supprimer.
00:04:27 :Donc là c'est la partie un petit peu plus compliquée.Pour connecter le signal ça va être assez simple on va utiliser un signal qui est assezexplicite sur notre listWidget qui est itemDoubleClicked donc tout simplement quand on va double cliquersur l'élément ce signal va être déclenché.
00:04:42 :On va le connecter à une méthode qu'on va créer tout de suite qu'on va appeler deleteToDoet je vais la mettre juste à la suite ici donc def delete ToDo on n'oublie pas le selfet pour l'instant je vais juste faire un print en disant item DoubleClicked.
00:04:54 :Donc on va vérifier que ça fonctionne je lance le script je mets un ToDo je doubleclique dessus et là j'ai bien la fonction qui est déclenchée avec le print qui s'effectue.
00:05:03 :Donc ça fonctionne maintenant ce que je vais vouloir faire c'est pas juste un print maissupprimer l'élément.Donc ce signal item DoubleClicked si vous allez voir dans la documentation il va envoyer desinformations et notamment l'élément sur lequel on a cliqué.
00:05:15 :Donc cet élément je vais pouvoir le récupérer dans un paramètre ici je vais l'appeler itemtout simplement.Si je fais un print de item.text vous allez voir qu'on peut récupérer le texte qui est
00:05:25 :sur notre item.Donc item ici ça va être un objet de type QListWidgetItem et on va pouvoir récupérerle texte de ce QListWidgetItem avec cette méthode texte.
00:05:35 :Donc je sauvegarde je relance on va mettre ici apprendre piton et si je double cliquesur cet élément vous voyez qu'on a bien le texte de notre item qui est affiché.
00:05:44 :Donc moi ce que je veux c'est pas afficher le texte c'est supprimer cet élément etc'est là que c'est un petit peu compliqué on pourrait se dire qu'on a une méthode parexemple delete qui existe ce n'est pas le cas malheureusement et c'est un petit peuplus complexe que ça.
00:05:55 :C'est personnellement une façon de faire que je connais maintenant puisque je l'utilisedepuis très longtemps mais qui je trouve n'est pas très logique.Ce qu'on va devoir faire en fait c'est utiliser à partir du QListWidget une méthode qui s'appelletakeItem et takeItem on va lui passer comme vous le voyez ici avec l'indication de Visual
00:06:11 :Studio Code l'arrangé que l'on souhaite supprimer.Par exemple si je mets 0 ici ça va supprimer le premier élément de la liste, si je mets 1 çava supprimer le deuxième élément, 2 etc pour supprimer des éléments de notre liste.
00:06:21 :Ce qu'on va devoir faire c'est récupérer l'arrangé de notre élément.Là encore on pourrait se dire il y a bien une méthode qui s'appelle row par exemplequi permet de récupérer l'arrangé de l'élément.
00:06:30 :Malheureusement non il va falloir là encore passer par notre ListWidget pour récupérerl'arrangé d'un item.Donc c'est pour ça que je vous dis que c'est un petit peu tordu donc bravo si vous l'aveztrouvé donc on va faire self.ListWidgetTodo et on va utiliser la méthode row sur ce ListWidget
00:06:45 :et lui passer un élément donc on va lui passer notre item et donc cette méthode elle va nouspermettre de récupérer l'arrangé de l'élément.Donc par exemple si on double clique sur le premier élément de la liste et bien cetteméthode va nous retourner l'index 0 en nous disant que donc l'élément qui est en premier
00:07:00 :dans la liste est à la position 0.On va pouvoir donc passer cette position à takeItem et ainsi enlever l'élément de laliste.Donc voilà pourquoi je vous disais que c'est un petit peu tordu, vous voyez qu'il fautpasser par deux méthodes à partir de la liste pour supprimer un élément.
00:07:14 :On aimerait bien pouvoir faire tout simplement item.delete, malheureusement ce n'est paspossible et des fois il faut passer par des façons un petit peu détournées comme celle-ci.
00:07:20 :Une fois que vous le savez, vous ne vous posez plus la question et vous le faites directement.Donc je lance le script, on va vérifier que tout fonctionne, apprendre Python,apprendre JavaScript et apprendre on va dire cette fois-ci Ruby.
00:07:33 :Si je double clique sur un élément, donc vous allez voir que si je double clique en fait onva récupérer dans item ici l'élément, on va récupérer l'arrangé, dans ce cas-ci ce seraitl'arrangé 2 puisqu'on commence à 0 en Python, donc on a 0, 1 et 2 et on va passer ce 2 ici à
00:07:48 :take item et ainsi l'enlever de la liste.Donc je double clique, ça l'enlève, si je sélectionne le premier et que je doubleclique sur le premier ça va bien enlever l'élément sur lequel j'ai double cliqué.
00:07:57 :Donc voilà pour les signaux qui sont maintenant tous connectés,on a donc trois connexions ici, le return pressed, le clic sur le bouton et le itemdouble click sur notre liste widget qui nous permettent d'enlever un élément de notre liste.
00:08:09 :Bravo si vous avez réussi à faire tout ça de votre côté,comme je vous disais les deux premiers étaient assez simples, le dernier un petit peu pluscomplexe.
00:08:15 :N'hésitez pas comme d'habitude à aller voir la documentation pour voir tous les signauxqui sont disponibles et les éléments également qui sont envoyés.On aurait pu ici se débrouiller d'une autre façon, c'est à dire plutôt que de récupérerl'item qui est envoyé, aller récupérer depuis notre liste l'élément qui est sélectionné,
00:08:30 :mais dans ce cas-ci quand on a notre signal ici item double clique qui est activé,automatiquement l'item va être envoyé.On peut directement le récupérer sans avoir besoin de passer par la liste,donc vraiment n'hésitez pas à aller voir la documentation pour voir tout ce qui estenvoyé à chaque fois, je vous le dis parce que ça m'est arrivé vraiment par le passé
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.