- 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 le début de la gestion de ce que j'appelle en français le glisser-déposer,en anglais ça s'appelle drag and drop.
00:00:08 :C'est ce qui va nous permettre de déposer les images depuis un explorateur dans notre interface.On va faire ça tout de suite dans cette partie.
00:00:16 :La première chose qu'il faut faire, et je vais le faire directement à l'intérieur de ModifyWidget,ça va être d'accepter le drag and drop.Puisque par défaut l'interface ne va pas accepter qu'on dépose des choses dessus,ce qu'il faut faire c'est tout simplement un self.setAcceptDropped.
00:00:32 :C'est une méthode qui va nous permettre d'accepter le drop.On va mettre true pour lui dire qu'on veut accepter le drop.Si vous vouliez, par défaut, c'est à false.
00:00:41 :Si jamais vous voulez changer ce comportement, vous pourriez mettre false.Mais c'est le comportement par défaut.On veut accepter qu'on puisse déposer des éléments sur l'interface.
00:00:49 :On va passer l'argument true ici à cette méthode.Comme ça, ça va nous permettre d'accepter les drops.On va gérer l'apparition et la disparition du label DropInfoqui nous indique où déposer les images sur notre interface.
00:01:03 :Pour ça, on va surcharger deux méthodes de notre interfacequi sont le dragEnterEvent et le dragLeaveEvent.Ce sont des événements qui vont être déclenchéslorsque l'on va entrer avec des éléments dans l'interface,donc dragEnter, et quand on va sortir, dragLeave.
00:01:19 :On va les créer, donc def dragEnterEvent.Vous voyez que j'ai l'autocomplition.Là, il me met tout ça ici.Nous, on va juste garder la première partie icipuisque par défaut, on va recevoir l'événement en questionqui est en train d'arriver, donc l'événement de dragAndDrop.
00:01:34 :Et cet événement, on va devoir l'accepter dans ce cas-ci,donc on va faire event.accept pour dire à l'interfacequ'on veut accepter que l'utilisateur dépose des chosessur notre liste widget.
00:01:45 :On fait event.accept et à l'intérieur de cette méthode,on va rendre visible le label DropInfopuisque ce qu'on veut, c'est que quand on commence à glisserdes images sur l'interface, ce label soit visible.
00:01:57 :Donc on va faire self.labelDropInfo,setVisible, et cette fois-ci, on va dire true.Donc on veut que le label soit visible,donc on passe le boulet 1 true à la méthode setVisible.
00:02:08 :On va ensuite avoir le dragLeaveEvent,donc dans ce cas-ci, dragLeaveEvent comme ceci.Là encore, on va garder juste event ici.Donc en passant, ça c'est là encore un nom de paramètre.
00:02:17 :On pourrait mettre le nom que l'on veut.Si je mets e, par exemple, ça va fonctionner.Par contre, il faut que je mette e aussi ici dans ma méthode.
00:02:24 :Mais voilà, c'est juste un nom de paramètre.Donc vous pouvez mettre ce que vous voulez,c'est juste que par défaut, dans cette méthode,on va avoir un premier paramètre,et donc il faut l'avoir ici, sinon vous allez avoir une erreur.
00:02:34 :Donc dans le dragLeaveEvent, cette fois-ci,on n'a pas besoin de mettre event.acceptpuisque c'est quand on sort les éléments de l'interface.Donc là, on ne veut pas accepter,on veut juste accepter quand l'utilisateurrentre des éléments dans l'interface.
00:02:47 :Et donc quand ça va sortir, on va faire l'inversede ce qu'on avait ici, c'est-à-dire qu'on va cacherle label DropInfo.Donc on va faire SelfLabelDropInfo,SetVisible, et on va dire False cette fois-cipour dire qu'on veut cacher ce label.
00:03:00 :Donc si je lance l'interface, on va tester tout de suitepour voir si ça fonctionne.Donc j'ai des images ici, j'ai mon interface.Pour l'instant, le label est caché puisque,si vous vous souvenez bien dans la partie précédente,de base, on l'avait caché icidans la méthode ModifyWidgets.
00:03:14 :On avait fait un SetVisible à False.Donc par défaut, il est caché.Par contre, si je vais sélectionner des imagesici et que je les glisse sur mon interface,vous allez voir que dès qu'on entredans l'interface, on va rentrer dans leDragEnterEvent, et là, hop,comme par magie, j'ai le label
00:03:30 :qui apparaît. Donc il me dit de déposerles images sur l'interface.Si jamais je sors de l'interface,donc si je déplace mon curseur et que je sorsque ce soit en haut, à gauche, à droite, n'importe où,dès que le curseur va sortir de l'interface,vous allez voir qu'on va être dans le
00:03:44 :DragLeaveEvent et que le labelva se cacher. Donc je sorsde l'interface et vous voyez que dès qu'on sortde l'interface, dès que le curseur sort de l'interface,le label disparaît. Si je reviens,
00:03:54 :il réapparaît. Si je ressors en haut,ça disparaît, etc. Donc dès qu'on estsur l'interface, ça apparaît et dès qu'on en sort,ça disparaît. Donc c'est exactement ça qu'on veut
00:04:02 :et si je laisse tomber les imagessur l'interface, par contre, pour l'instant,ça ne fonctionne pas puisque pour l'instant, on a leDragEnterEvent, le DragLeaveEventet maintenant, il va falloir gérer leDropEvent. Donc DropEvent, c'est
00:04:14 :l'événement qui va être déclenchéquand on va déposer les images, quand on va relâcherle clic et qu'on va déposer des élémentsdans l'interface. Pour l'instant, on fait juste entrer et sortir
00:04:22 :de l'interface avec le curseur,mais je maintiens le curseur enfoncé.Donc si jamais je relâche le curseur, là, c'est un autreévénement qui est donc le DropEventqu'il va falloir gérer et qu'on va faire dans la suitequi va nous permettre d'ajouter le chemin completde ces images à l'intérieur de notre liste
00:04:36 :widget. Vous remarquez par la même occasionque pour l'instant, le label est toujours affiché.Donc ça, c'est parce que j'ai laissé,donc j'ai droppé les imagesdans mon interface et donc dans le DropEvent,il faudra aussi gérer ça pour que lorsquel'on dépose les images, eh bien,on cache ce label, puisque pour l'instant, il reste affiché
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.