- 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 connecter les raccourcis clavier au bouton de notre interface,puisque pour l'instant on est obligé de cliquer sur les boutons et généralement une calculatrice,c'est plus agréable à utiliser quand on peut taper les nombres et les opérations directement sur notre clavier.
00:00:14 :Donc on va voir comment créer des raccourcis clavier et des séquences de touches avec PySide.La première chose qu'on va faire cependant, c'est désactiver l'édition sur notre line edit,puisque pour l'instant, si je lance l'interface, on peut écrire à l'intérieur de cette boîte de texteet nous on aimerait bien limiter ça pour limiter le risque d'erreur
00:00:31 :et ne pas avoir n'importe quoi ici à l'intérieur du line edit.Donc juste après la création du line edit ici, je vais rajouter sur le LEResult un setEnabled à false.
00:00:41 :Pour l'instant, vous allez voir que ce n'est pas très beau au niveau de l'interfacepuisqu'on a l'impression vraiment qu'elle est complètement désactivée,mais on verra par la suite quand on va modifier le style de l'application, qu'on changera les couleurs, etc.,
00:00:52 :que cet aspect grisé ici ne sera plus visible.Donc on aura vraiment des couleurs qui donnent l'impression que la boîte n'est pas désactivéeet ça ne sera donc plus un problème.
00:01:01 :Donc là maintenant, si j'essaie de modifier le line edit, je ne peux pluset je suis donc obligé de passer par les boutons de l'interfaceou par les raccourcis clavier qu'on va mettre en place tout de suite.
00:01:09 :Donc pour connecter ces raccourcis clavier, on va mettre tout ça dans une autre méthodepour bien séparer notre code.On va l'appeler ConnectKeyboardShortcuts tout simplementet à l'intérieur de cette fonction, on va donc créer les raccourcis clavier pour nos boutons.
00:01:23 :Donc on va boucler sur les boutons qui sont dans notre dictionnaire,on va récupérer le texte du bouton, c'est la clé,et le widget, donc c'est la valeur.
00:01:31 :On va boucler donc sur notre dictionnaire, c'est self.buttons,et on va boucler sur items puisqu'on veut récupérer à la fois les clés et les valeurs.
00:01:39 :Et ensuite ici, on va créer un QShortcut, donc QShortcut comme ceci.Alors là encore, il va falloir l'importer.Donc je vais utiliser option entrée pour utiliser l'import automatique de PyCharmet vous remarquez ici que le module qui contient QShortcutet qui va contenir également l'autre classe que l'on va utiliser qui est QKeySequence,
00:01:57 :et bien ce module ce n'est pas QtWidget mais c'est QtGUI.Donc ça, auparavant il n'y avait que ce module QtGUI avec la version de PySide de baseet après avec PySide 2 et maintenant PySide 6 également,on a beaucoup de widgets qui ont été déplacés dans QtWidgetmais il y a encore quelques classes comme celle-ci qui sont toujours à l'intérieur de QtGUI.
00:02:16 :Heureusement, là encore avec l'import automatique, on n'a pas vraiment besoin de s'en souvenir.PyCharm ou VSCode trouvent automatiquement l'endroit et le module où se trouvent ces classes.
00:02:25 :Donc on va créer ici un QShortcut et ce QShortcut, il va falloir lui passer en premierune séquence de touches sur lesquelles on veut appuyer pour déclencher ce shortcut.
00:02:34 :Donc cette séquence, on va la créer avec QKeySequence,même si dans notre cas on n'aura qu'une seule touche, ce n'est pas grave,il faut quand même créer un QKeySequence.
00:02:41 :Donc cette séquence de touches, ça va tout simplement être le texte du bouton qu'on a récupéré iciet donc quand on va appuyer sur notre clavier sur le texte du bouton, ça va déclencher ce raccourci clavier.
00:02:52 :Ensuite, on va devoir donner ici le widget sur lequel on va avoir cet événement qui va être déclenché.Donc ça en fait, ça permet d'avoir par exemple des raccourcis claviers qui vont être dépendants.
00:03:02 :Par exemple, si on avait plusieurs fenêtres dans notre application,on pourrait avoir des raccourcis claviers différents pour chaque fenêtre.Dans ce cas-ci, on n'a qu'une seule fenêtre,mais il faut quand même indiquer sur quel élément ce QShortcut va être déclenché.
00:03:13 :Dans ce cas-ci, c'est notre fenêtre, donc c'est tout simplement Self.Et ensuite, on va dire tout simplement quelle méthode on souhaite déclencherquand ce raccourci clavier est déclenché.
00:03:21 :Donc on pourrait mettre par exemple NumberOrOperationPressed.Le problème, c'est qu'il y a certains boutons qui ne sont pas connectés à cette méthode,par exemple à ClearResult pour le bouton C ou à ComputeResult pour le bouton d'égalité.
00:03:32 :Donc ce qu'on va faire à la place, c'est un petit peu tricher.En fait, on va émettre le signal du clic sur le bouton.Donc pour ça, on va faire bouton.Clicked, donc on va cibler ce signal du clic.
00:03:43 :Et au lieu de le connecter comme on l'avait fait dans les parties précédentespour le connecter à une méthode, on va tout simplement connecter ce QShortcutà la méthode Emit qui va déclencher ce signal.
00:03:54 :Donc si vous voulez, ça va simuler un clic sur le bouton.Et comme on a connecté ici les boutons, donc avec Clicked.Connect ici,on a connecté ce signal clic aux différentes méthodes de notre application.
00:04:05 :Et donc en simulant ce clic, ça va automatiquement, en fonction du bouton,aller chercher la méthode qui est connectée au bouton sur lequel on a cliqué.
00:04:13 :Donc comme ça, on n'a pas besoin de s'embêter et de faire des if et des else, etc.en fonction du bouton, on peut juste émettre le signal de clic sur le bouton.
00:04:20 :Et avant de terminer cette partie, on va connecter un dernier raccourci clavier,c'est la touche Entrée qui va nous permettre de déclencher le calcul du résultat.
00:04:28 :Donc pour ça, on va refaire un QShortcut cette fois-ci en dehors de la boucle.Et on va recréer un QKeySequence.Et cette fois-ci, on va faire quelque chose d'un petit peu différent,c'est-à-dire qu'on ne va pas connecter avec une chaîne de caractère.
00:04:39 :Donc on pourrait mettre par exemple ici, je crois, Return qui correspond à la touche Entrée.Mais ce qu'on peut faire, c'est aller carrément cibler cette touche grâce à une constantequi est disponible dans un autre module.
00:04:49 :Ce module, c'est le module QtCore.Et on a à l'intérieur des constantes.Donc par exemple, on va avoir les différentes touches de notre clavier.Donc on va mettre Key, Return comme ceci.
00:04:58 :Et on va importer ce module QtCore.Donc là encore avec Option Entrée.Donc c'est ImportPysite6.QtCore.Et donc cette constante ici, ça représente la touche Entrée de mon clavier.
00:05:08 :Donc c'est juste pour vous montrer une autre façon de faire.Plutôt que de passer par une chaîne de caractère,on peut avoir quelque chose d'un peu plus flexible comme ceci.
00:05:16 :On pourrait avoir d'autres touches.Par exemple, si on veut connecter la barre d'espace, on pourrait faire Key, Space.Donc ça permet de ne pas avoir à se souvenir.
00:05:23 :Puisque la touche Entrée, par exemple, je ne suis plus sûr.Je crois que c'est Return en anglais.Mais je ne suis plus sûr.Donc si vous ne vous souvenez pas du nom des touches en chaîne de caractère,vous pouvez toujours utiliser ces constantes à l'intérieur du module QtCore.
00:05:35 :Donc on va connecter tout ça à Self là encore, donc à notre widget.Et cette fois-ci, on va connecter la touche Entrée à ComputeResultpour calculer le résultat de l'opération.
00:05:45 :Et avant de tester tout ça, on va appeler cette méthode ConnectKeyboardShortcutsà la fin de la méthode Init.Puisque sinon, cette méthode ne sera pas appeléeet les connexions ne seront donc pas effectuées.
00:05:55 :Donc on va appeler cette méthode ici tout à la fin de la méthode Init.Et si je teste maintenant mon application.Donc si j'appuie sur 10, par exemple, on voit bien le 1 et le 0 qui sont mis là.
00:06:04 :Si j'appuie sur un symbole d'opération, il est également rajouté.Et si j'appuie sur Entrée, alors ça ne fonctionne pas.Et c'est parce que j'ai tout simplement oublié de changer.
00:06:13 :J'avais mis Key, Space.Et en fait, c'est Key, Return, donc il faut mettre.Donc c'est la touche Entrée et non pas la touche barre d'espace.
00:06:19 :Donc je relance, je fais 10 plus 20.J'appuie sur Entrée et j'ai bien 30 qui est affiché.Donc le résultat est correctement calculé.Donc voilà comment créer des raccourcis clavier.
00:06:28 :Et les connecter à des QKeySequences, donc des séquences de touches.Dans ce cas-ci, on a une seule touche.Mais avec le QKeySequence, on pourrait faire des séquences de raccourcis clavier.
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.