- 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 :Avant de modifier notre interface, j'ai remarqué qu'il y avait une méthode qu'on a oublié de créer,qui est la méthode qui va être appelée quand on va cliquer sur le bouton Clean.
00:00:08 :Ce bouton va supprimer toutes les tâches qui ont déjà été complétées.On va créer cette méthode. Vous allez voir, ce n'est pas très compliqué.On va déjà créer la connexion ici. La connexion va être boutonClean.click.connect
00:00:20 :et on va la connecter à une méthode qu'on va appeler CleanTask.On va créer cette méthode ici, juste entre AddTask et EntreGetTask, comme ceci.Et à l'intérieur de cette méthode, on va boucler sur tous les éléments dans notre listepour vérifier s'ils ont ou non été complétés.
00:00:37 :Et s'ils ont été complétés, on va tout simplement enlever la tâche et ensuite repopuler notre liste.Si vous vous souvenez bien, pour boucler à travers les éléments d'un ListWidget, c'est un peu tordu, là encore.
00:00:48 :On l'avait fait dans un projet précédent, je ne me souviens plus exactement lequel,mais c'est probablement le PyConverter qui nous a permis de convertir les images.
00:00:55 :Il me semble qu'on devait boucler à travers toutes les images.Donc ce qu'on va faire, c'est boucler sur le nombre d'éléments.On va faire une boucle comme ceci, pour eInRange, et on va lui passer le nombre d'éléments dans notre liste.
00:01:06 :Donc Self.TW, non pas TW, ListW, pardon, ListWTask.Count.Count va nous retourner le nombre d'items qu'il y a dans notre liste.On va faire un range là-dessus et on va faire une boucle for sur cette liste.
00:01:20 :Par exemple, si on a trois éléments, une boucle qui va faire 0, 1 et 2.On va récupérer grâce à cet index, grâce à 0, 1 et 2, par exemple l'item qui est dans notre liste.
00:01:32 :Pour ça, je vais faire une variable ListWidgetItem qui va être égale à Self.ListWTask.Itemet on va lui passer l'index ici.Donc si on a trois éléments, on boucle sur une liste qui contient les éléments 0, 1 et 2.
00:01:45 :Donc on aura les nombres 0, 1 et 2 dans i et ensuite on va récupérer les items 0, 1 et 2en faisant Self.ListWidgetTask.Item et en passant l'index de l'élément ici.
00:01:54 :On récupère ça dans une variable que j'ai appelée ListWItemet cette variable va être un QListWidgetItem qui va correspondre à notre item ici.Cet item va avoir un attribut done qui va nous permettre de savoir si la tâche a été complétée ou non.
00:02:09 :Je reviens dans ma méthode ici.On va faire une vérification donc if ListWidgetItem.Donedonc si la tâche est complétée, on va l'enlever de notre liste.
00:02:18 :On va utiliser notre API Package.API.Tasket on a une fonction RemoveTask à laquelle on peut donner le nom de la tâcheet ça va l'enlever de notre liste.
00:02:27 :Donc le nom ça va être ListWItem.Name puisque dans notre TaskItem au-dessus,on avait également stocké le nom de la tâche à l'intérieur de cet attribut.
00:02:35 :Donc si on veut accéder au nom de notre tâche, il suffit d'utiliser ListWidgetItem.Name icidonc l'attribut Name de notre ListWidgetItem.On le passe à notre paramètre Name dans notre fonction RemoveTasket ça va enlever la tâche de notre liste de tâches.
00:02:50 :Ce qu'il nous reste à faire c'est utiliser notre fonction GetTask iciqui va permettre de repopuler la liste de tâcheset donc vu qu'on aura au préalable enlevé la tâche ici avec cette boucleet bien il ne va pas repopuler les tâches qui ne seront plus dans notre liste.
00:03:04 :Donc on va faire Self.GetTasket il y a juste une toute petite dernière chose que je vais rajouterpuisque j'ai eu des problèmes sur Mac avec ça, c'est un Repaint.
00:03:12 :Puisque par défaut, alors je peux vous montrer, je ne sais pas si ça va le faire cette fois-cimais ça me l'a fait tout à l'heure.
00:03:18 :Donc si je sélectionne des tâches ici pour les compléter et que je clique sur Clean,là vous voyez qu'on a un petit bug d'affichage.Et en fait la seule façon de résoudre ce problème c'est de changer la taille de la fenêtreet vous voyez que dès le moment que je change légèrement la taille,
00:03:33 :ça fait un refresh sur ma liste et les tâches disparaissent.Donc c'est un peu problématique et pour forcer ce refresh,en fait on peut utiliser la méthode Repaint sur notre liste Widget.
00:03:42 :Donc je peux faire Self.LWTask.Repaintet ça va forcer la liste à se rafraîchir et ça va régler ce petit problème d'affichage.Donc moi je l'ai vu que sur Mac, peut-être que sur Windows ou sur Linux vous allez l'avoir aussi.
00:03:54 :Donc je vais faire une tâche ici pour vérifier, j'en fais une, je clique,j'appuie sur Clean et là vous voyez que automatiquement le Repaint se faitet qu'on n'a plus ce problème de rafraîchissement de l'interface.
00:04:05 :Donc voilà, quand vous avez des problèmes sur des widgets comme ça,souvent un Repaint ça permet de mettre les choses à jouret de s'assurer que tout est bien recalculé.
00:04:13 :Donc voilà pour notre méthode CleanTask.Donc ça fonctionne, vous voyez on l'a fait plusieurs fois déjà ici.Quand je clique sur une tâche pour la valider et qu'ensuite je clique sur Clean,toutes les tâches qui sont en vert dans ma liste automatiquement vont être supprimées.
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.