- 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 :Pour qu'il se passe quelque chose quand on clique sur les actions de notre barre d'outils,on va tout d'abord créer une nouvelle méthode que je vais appeler changeLocationque l'on va appeler quand on va cliquer sur les boutons de notre barre d'outils.
00:00:12 :Cette méthode, on va lui passer un paramètre ici qui va s'appeler locationqui va être l'endroit où l'on veut naviguer quand on clique sur notre icône.
00:00:20 :Ici, je vais récupérer mon action dans une variable que je vais appeler actiondonc je vais mettre action est égale à mon action que j'ai ajoutéeet comme ça on va pouvoir connecter le signal triggered sur cette action.
00:00:30 :Je vais faire action.triggered, comme ceci, .connectet on va connecter cette action à cette méthode.La méthode ici, on a un paramètre location que l'on va devoir envoyerquand on va connecter cette action.
00:00:43 :Pour ça, on va devoir importer le module functools.Pour faire ceci, on va devoir importer la fonction partial.On l'avait fait dans un projet précédent si vous vous souvenez bien.
00:00:53 :Je vais le mettre juste avant le fromPySide2puisque c'est quelque chose qui est contenu dans la librairie standard de Pythondonc on le met en premier.
00:01:01 :Et ça, ça va nous permettre d'envoyer un argument ici à notre méthode dans la connexion.On va dire partial ici.On va mettre le nom de notre méthode donc changeLocationet ce qu'on veut lui passer à cette méthodec'est la location, l'endroit où l'on veut naviguer.
00:01:19 :On va envoyer la location sur laquelle on boucle actuellementdonc dans ce cas-ci ça va être home.Je vais envoyer location et ça on va le récupérer ici dans changeLocation.
00:01:28 :Pour l'instant, je vais juste faire un print pour vérifier que tout ça fonctionne bien.Je lance mon application, je clique sur le boutonet là vous voyez qu'on a bien le nom qui s'affiche ici en bas dans Python.
00:01:39 :Ça fonctionne, maintenant il va falloir récupérer le dossier dans lequel on veut navigueren fonction de ce texte.Je n'ai pas nommé là encore ces images par hasard.
00:01:47 :Je les ai nommées exactement comme ce qu'on avait sur la page icidonc par exemple Desktop, Documents.Donc là vous voyez que par exemple Documents j'ai mis le SMusic, Movies, Pictures etc.
00:01:57 :C'est là aussi pour cette raison que j'ai mis ces mots-là en anglaispuisque comme ça on va pouvoir récupérer avec une technique un petit peu détournéevous allez voir le chemin vers ces endroits.
00:02:07 :Donc ce que je vais faire dans PyCharm ici c'est utiliser cette chaîne de caractèreset on va la concatener dans une chaîne de caractères qu'on va évaluerpour aller chercher le standard path.
00:02:17 :Donc si vous vous souvenez bien dans la partie précédenteon avait QtCore.QStandardPath comme ceci.Donc je vais le mettre dans une variable que je vais appeler StandardPathet avec cette classe ici on pouvait aller chercher les standard locationset on allait chercher par exemple la constante QtCore.QStandardPath
00:02:35 :et on allait chercher DesktopLocation.Donc là on retrouve la chaîne de caractères que je vais utiliseravec la majuscule.Donc en fait ce qu'on va faire c'est qu'on va plutôt que de mettre ça ici directementen code on va transformer tout ça en chaîne de caractères.
00:02:49 :Donc je mets des guillemets autour de tout ça.On va faire un fString et à la place de Desktop icion va utiliser notre variable Location.
00:02:57 :Donc on va mettre des accolades et on va indiquer Location iciavec .capitalize.Donc c'est ça toute la beauté des fStringsc'est qu'on peut même faire un capitalize directement dans notre fString.
00:03:08 :Donc Location.capitalize qu'est-ce que ça va me retourner ?Dans le cas de Home ça va me retourner Home avec un H majuscule.Et si on retourne voir dans notre liste icion va aller vérifier, on a par exemple le Home icidonc avec le H majusculeet on va avoir la même chose pour tous les autres endroits où on veut naviguer.
00:03:24 :Donc on va avoir Desktop, Documents, Movies, Pictures et Musiques.Donc tout ça ça va nous retourner pour l'instant une chaîne de caractèreset cette chaîne de caractères on va pouvoir l'évaluer.
00:03:33 :Donc je vais la récupérer dans une variable que je vais appeler Pathet on va faire tout simplement Evaldonc pour évaluer cette chaîne de caractèrescomme si c'était du code Python.
00:03:41 :Donc comme ça, ça nous permet de concaténer en faitici directement une variableà l'intérieur de quelque chose qui est donc normalement une ligne de codesauf que si je laisse ça sans le Evalsi je mets une chaîne de caractères icice code ne sera pas évaluéet donc on va avoir juste la chaîne de caractères
00:03:58 :StandardPath, DonotLocation, etc.Donc tout ce qu'on veut c'est vraiment évaluercette chaîne de caractères comme si c'était une ligne de codepour récupérer le chemin.
00:04:06 :Donc là on va vérifier que ça fonctionneje vais faire pour l'instant juste un print de Pathet je vais lancer mon scriptet vous allez voir quand on clique icipar exemple que là on adonc dans ce cas-ci on est sur le rootpuisque je suis avec PyCharm
00:04:17 :et PyCharm est lancé en administrateurmais vous voyez qu'on récupère bien le bureaudonc le chemin complet vers le bureauje peux faire pareil avec le dossier utilisateuravec mes documents, movies, pictures et musique.
00:04:30 :Donc ça fonctionne à chaque foisgrâce à cette fonction Evalqui nous permet d'évaluer notre chaîne de caractèrescomme si c'était du code.Donc c'est ça la petite astuce que je vous disaisvous voyez que tout ça vraiment est basélà encore sur le fait que j'ai bien nommé
00:04:42 :mes icônes dès le départdonc j'ai vraiment fait attention à çaet si vous changez la moindre des chosesça ne va pas marcher.Si à la place de documentsici avec un Sje mets un document sans le Sdéjà on n'aura pas l'icônedonc je vais le lancer
00:04:54 :vous voyez que là il n'arrive pas à trouver l'icôneet même si on avait l'icônesi par exemple ici j'enlève le capitalizeet que je réessaye comme ceci de lancer mon scriptet d'aller chercher mes documentsvous voyez que là encore on a un problèmepuisqu'il nous ditdonc c'est pas les documents
00:05:09 :c'est le desktop que j'avais essayé d'aller cherchermais il ne trouve pasdesktop locationpuisque la constanteelle nécessite un D majusculesi on retourne voir icila constante elle a un D majusculedans desktop locationdonc c'est pour ça que c'est très importantde vraiment avoir toutqui est bien millimétré ici
00:05:24 :avec les chaînes de caractèresavec les capitalize etc.C'est important ausside bien créer cette variablemême si pour l'instantvous voyez qu'il nous ditqu'elle n'est pas utiliséedonc c'est normalpuisque PyCharm luiil considère çacomme une chaîne de caractèresil ne va pas évaluerlui même à l'intérieur de mon script
00:05:41 :ce chemin pour vérifierà quoi ça corresponddonc pour luion n'est pas en train d'utilisercette variablemais vous avez besoin de la déclarerpuisque en faiton l'utilise juste icidonc si je l'enlèvesi j'enlève ça iciet que j'évalue cette lignecette chaîne de caractèreset bien on va avoir une erreur
00:05:56 :qui va nous dire questandard path n'existe pasdonc il faut bien la déclarer au débuton pourrait si on veuts'éviter une ligneet carrément mettre ça directementà la place de standard path icimais là ça commence à faireune ligne un peu longuemais ça fonctionne
00:06:09 :ça nous éviterait d'avoirà créer cette variable auparavantmais si je fais çaet que je lance mon scriptvous allez voir normalementon va avoir là encorevoilà le script qui fonctionneavec la liste qui contient le chemindonc ça c'est une listecomme je vous le disais
00:06:22 :donc nous ce qu'on va vouloir afficherc'est le premier élémentde la listedonc on va devoir récupérerle premier élément de la listeje vais faire tout simplementpath égale path 0donc là j'écrase ma variable pathpar elle mêmeet je récupère justele premier élément de ma liste
00:06:36 :donc dans path icion aura la chaîne de caractèrepar exemple var root desktopcette chaîne de caractèreon va pouvoir la mettredans notre modèlepour changer le treeviewet le listviewdonc je vais faire self.treeview
00:06:49 :et on va utilisercette root indexqu'on avait déjà utilisédans des parties précédenteset là si vous vous souvenez bienon ne peut pas lui passerdirectement le pathil faut passer par notre modèledonc il faut aller récupérerun QModelIndexà partir de notre modèledonc on va faire self.model.index
00:07:05 :et cette méthode indexon va pouvoir lui passer un chemindonc on va lui passerle path iciet cette méthode va nous retournerun QModelIndexque l'on peut passerdonc à notre méthodesetRootIndexdonc ça fait beaucoup de chosesc'est assez compliqué quand mêmeà utiliser vous voyez
00:07:20 :mais après une fois qu'on le saitça devient des automatismes un peuet on sait qu'à chaque foisil faut passer par le modèlepar la méthode indexetc etcdonc on va faire çapour le treeviewet le listviewdonc pas le listview clickedattention le listviewvoilà comme ceci
00:07:34 :donc le treeviewet le listviewon change le root indexet on lance notre scriptpour vérifier que ça fonctionnedonc je vais aller par exempledans mon dossier utilisateurça fonctionnesur le bureauça fonctionnedonc là je suis dans rootetc doncon n'a pas le bureau
00:07:49 :qui est affichépuisque le bureaupour l'administrateur n'existe pasmais on pourrait vérifierque ça fonctionneen fait je peux le faire directementen allantdonc dans un terminaldonc si j'ouvre un terminalicije vais sortir de làet je vais fairefbs rundonc là je ne suis pas
00:08:03 :dans le bon dossierje suis hopdans celui qui estdans mes documentscelui qui est dans mes documentsc'est celui qui est terminédonc je vais aller icilancer fbs runet là normalementdonc si on vadans mon dossier utilisateurj'ai bien mon dossier utilisateursur le bureau
00:08:17 :j'ai bien le bureaumes documentsles moviesles pictureset la musiquedonc ça fonctionnec'est comme je vous disjuste parce que sur pycharmcomme je suis en mode administrateurje me retrouve dans des dossiersqui n'existent paspour l'utilisateur administrateurdonc c'est pour çaqu'on n'avait rien
00:08:31 :qui s'affichaitmais si vous êtesavec un utilisateurqui a doncses dossiers par défautque ce soit sur macsur windowsou sur linuxsur windowson va retrouverles mêmes dossiersmais adaptés pour windowsdonc plutôt que d'avoirslash userslash tbashslash documenton va avoir
00:08:48 :ces deux pointsslash utilisateurtbashmes documentsetcdonc c'est làtout l'intérêtde passer parle module qtcoredonc voilàça fait beaucoup de chosesdans cette partiebeaucoup de petits trucscomme ça qu'on utiliseà droite à gauchedonc avec qtcoredonc j'espère quevous avez bien compris
00:09:07 :ce qui se passe iciil y auraitdix mille façonsde faire çamoi je l'ai décidéde le faire directementd'une façon que je trouveassez efficaceavec les chaînes de caractère iciça m'évite d'avoirà répéter du codeet je peux tout faireà l'intérieur de ma boucle
00:09:20 :et vous voyez qu'on arriveà connecter beaucoupd'endroits comme çaavec quelques lignes de codeet si jamais on veut en rajoutersi jamais on veut rajouterune icône et un endroitdans lequel on peut navigueret bien il suffitde rajouter l'icônedans notre dossier ressourcesde rajouter le nom
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.