- 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 personlive_helpToutes les questions
Salvatore
11 novembre 2023 - 11 novembre 2023 à 11:45
checkConversation résolue
17 réponses
PySide6
Hello j'ai un petit souci lorsque j'exécute le code ci-dessous: J'ai déjé pour la 3ème fois tout supprimé et recommencé. Ce qui est bizarre c'est que la première fois ça …
00:00:00 :Dans la documentation de Qt for Python, vous allez voir qu'il y a énormément de widgetsqui sont disponibles.Je ne pourrai pas tous vous les montrer, je vais vous montrer les principaux qu'on utilisepour créer des interfaces graphiques et après, comme à chaque fois, je vous laisse explorerun peu plus tout ce qui est disponible de votre côté.
00:00:17 :Je vais quand même vous montrer les widgets que vous allez le plus souvent rencontrer.Je vais modifier ma classe ici qui hérite de QWidget et à la place, on va dans un premiertemps utiliser QPushButton.
00:00:27 :Je vais utiliser un QPushButton ici.Je ne peux plus changer le titre de ma fenêtre puisque cette WindowTitle, c'est une méthodequi n'est disponible que sur les QWidget et qui n'est pas disponible sur les QPushButtonpuisqu'on ne peut pas changer le titre d'un PushButton.
00:00:39 :Par contre, je peux changer le texte avec la méthode setText.On va pouvoir par exemple dire click me pour indiquer qu'on souhaite cliquer sur le bouton.
00:00:46 :Donc là, vous voyez que je n'ai rien changé à part l'héritage, donc QPushButton, toutle reste ici c'est de l'orienté objet, là encore même si on a des noms de variablesqui ne sont plus forcément très logiques puisqu'on a MainWindow et le nom de la classeMainWindow, ce n'est pas grave, on hérite du QPushButton et je vais juste vous montrer
00:01:02 :ici en faisant différents héritages, différents widgets que l'on peut utiliser.Donc je relance mon script et vous allez voir que cette fois-ci on a bien un bouton avecclick me sur lequel on peut donc cliquer, pour l'instant ça ne fait rien mais c'estvraiment juste pour l'exemple.
00:01:14 :On va avoir d'autres widgets assez intéressants comme par exemple le QLineEdit.Donc QLineEdit, ça va être tout simplement une boîte de texte dans laquelle vous allezpouvoir écrire.
00:01:23 :Si je relance l'application cette fois-ci, vous allez voir qu'on a une boîte de texteavec le texte qui est à l'intérieur de la boîte de texte, donc là ce n'est plus unbouton, c'est vraiment du texte que je peux supprimer et changer.
00:01:33 :Et vous voyez ainsi que parfois certaines méthodes sont disponibles sur différentswidgets.Donc le SetText ici, il était disponible sur le QPushButton et il est également disponiblesur le QLineEdit puisque dans les deux cas de figure on va pouvoir modifier le textede notre widget.
00:01:46 :On aurait la même chose par exemple avec le QLabel qui nous permet d'afficher toutsimplement du texte.Donc là encore, le SetText va être disponible.
00:01:54 :Donc je lance l'application et là vous voyez que cette fois-ci ce n'est ni un bouton niune boîte de texte mais tout simplement du texte qui est affiché dans mon interface.
00:02:01 :Donc vous allez très souvent avoir des méthodes comme ça qu'on appelle Setter, Getter.Donc vous avez le Set ici qui permet de modifier quelque chose et vous allez par la suitepouvoir récupérer ces informations.
00:02:10 :Par exemple si je souhaite récupérer le texte qui est affiché sur mon label, je peuxfaire Self.Text comme ceci.Donc ce n'est pas forcément très logique, on pourrait s'attendre à avoir un GetTextcomme ceci pour avoir le Set et le Get.
00:02:22 :En fait vous allez à chaque fois avoir le Set pour modifier quelque chose, donc pourmodifier une propriété comme SetText ou SetColor par exemple.Et ensuite quand vous voulez accéder à la valeur de cette propriété, dans ce cas-cion n'a pas de Get, on a juste le nom de la propriété en minuscule.
00:02:37 :Donc là on a bien une majuscule sur le T de texte puisque là encore on est avec duCamelCase.Et quand on a juste le nom de la propriété ici, eh bien on n'a pas de majuscule surla propriété.
00:02:46 :Donc je fais un Print de Self.Text et dans ce cas-ci ça n'a pas vraiment d'intérêtpuisqu'on set le texte ici et ensuite on l'affiche, donc ça va logiquement nous retournerClickMe.
00:02:55 :Donc je lance le script juste pour vous montrer, vous voyez que dans le terminal j'ai bienClickMe qui est affiché.Ce qu'on pourrait faire par exemple de plus intéressant c'est récupérer le texte quiest dans un QLineEdit pour récupérer ce que l'utilisateur a saisi et l'utiliser pourfaire d'autres choses.
00:03:08 :Donc il y a beaucoup de widgets comme ça qui sont très pratiques, qui sont déjàfaits, qu'on n'a pas besoin de créer et qui disposent de plein de méthodes que l'onpeut utiliser.
00:03:16 :Et ces méthodes il va falloir les apprendre, je vous redirige là encore vers la documentationpour explorer un petit peu tout ça.Par exemple avec le QListWidget dans ce cas-ci on va avoir une liste et donc cette listeon va pouvoir ajouter des éléments dedans.
00:03:28 :Pour l'instant si je fais juste une liste comme ceci elle va être vide, donc là onne s'en rend pas bien compte mais j'ai en fait une liste qui me permet d'afficher deséléments.
00:03:35 :Pour l'instant elle est vide mais je pourrais avec la méthode AddItem ajouter des élémentsdans cette liste.Donc on pourrait dire Item1 par exemple et ensuite ajouter d'autres éléments commececi en réutilisant cette méthode AddItem.
00:03:46 :Et si je relance le script vous voyez que cette fois-ci on a bien trois éléments dansnotre liste et on peut les sélectionner.Donc voilà quelques widgets qui sont assez intéressants.
00:03:54 :Je vous redirige là encore vers la documentation pour aller voir tout ce qui est disponible.Vous voyez qu'il y en a beaucoup après n'ayez pas peur, il y en a beaucoup aussi qu'on n'utilisepas.
00:04:02 :Par exemple ici vous voyez tous les QStyle c'est des choses que je n'ai jamais utiliséespersonnellement donc il ne faut pas avoir peur non plus.
00:04:08 :Il y en a peut-être une dizaine voire une quinzaine qu'on utilise très régulièrementet tout le reste c'est des choses qui sont disponibles mais qu'on utilise de façon beaucoupmoins régulière.
00:04:16 :Avant de terminer cette vidéo je vais quand même vous montrer le principe d'héritagequ'il est très important de comprendre dans Qt.Donc je vais vous montrer avec le QPushButton et vous allez voir que dans la documentationde Qt on a ici cette arborescence qui est affichée mais sur laquelle on ne peut pas
00:04:31 :cliquer.Alors c'est un petit peu embêtant, moi je vous conseille d'aller voir l'ancienne documentationde PySide.Donc si vous tapez PySide Documentation dans un moteur de recherche vous allez tomber surce site qui est donc strinicum.github.io alors je ne sais pas encore combien de temps ce
00:04:46 :site sera disponible.Ce que j'aime bien avec ce site donc c'est un site pour la version 1 de PySide qui commenceà être assez vieille.
00:04:52 :Vous voyez qu'on n'a même pas en fait le module Qt Widgets puisque dans les versionsprécédentes de PySide en fait il n'y avait pas de module Qt Widgets, c'est uniquementà partir de PySide 2 que ce module a été introduit et que beaucoup d'éléments quiétaient dans Qt GUI ici ont été déplacés dans Qt Widgets.
00:05:07 :Donc dans ce cas-ci dans cette documentation si vous voulez voir le QPushButton par exempleil faut aller dans Qt GUI et dans Qt GUI si je tape QPushButton on va retrouver sensiblementla même chose que ce qu'on avait dans la documentation officielle de Qt for Pythonmais on a des fois un peu plus d'éléments, un peu plus de texte.
00:05:23 :Donc là c'est vraiment je vous dirais un des désavantages de la documentation, elleest un peu éparpillée partout.Des fois vous trouverez plus d'informations dans la documentation directement en C++de Qt, des fois ça va être dans la documentation de PyQt, des fois ça va être dans la documentation
00:05:37 :de PySide 1, des fois de PySide 2.Donc vraiment il ne faut pas hésiter à aller voir les différentes documentations qui sontdisponibles même des fois en C++, celle en C++ c'est celle qui est la plus étofféequi contient le plus d'éléments.
00:05:49 :Après bien sûr le code que vous allez trouver est en C++ mais généralement ça vous permetquand même d'avoir quelques indices.Donc je reviens sur ma documentation ici, pourquoi je dis qu'elle est intéressantepuisque on a cette même arborescence ici mais dans ce cas-ci on peut cliquer dessus.
00:06:01 :Donc par exemple sur le QPushButton je peux remonter dans l'arborescence et voir que QPushButtonest l'érite de QAbstractButton qui lui-même est l'érite de QWidget.Donc c'est pour cette raison que par exemple sur le QPushButton on peut utiliser des méthodesqui sont définies dans QWidget.
00:06:15 :Donc si je reviens sur QWidget ici, on va retrouver par exemple le setMinimumWidth quiest défini ici qui permet de donner une taille minimale à un widget.
00:06:26 :Et donc c'est assez logique en fait cet héritage puisqu'il y a beaucoup de choses qui n'ontpas besoin d'être redéfinies à chaque fois.Donc ces trois éléments ici, CheckBox, RadioButton et PushButton, c'est des éléments qui seressemblent.
00:06:37 :A chaque fois il s'agit d'un élément sur lequel on peut cliquer, c'est juste que parexemple pour la CheckBox on aura une petite indication avec une icône que le bouton estcoché ou non.
00:06:45 :Et avec le RadioButton c'est un peu la même chose mais avec une icône différente.Donc tous ces widgets ici ils vont avoir des choses communes.
00:06:52 :Par exemple le setText c'est quelque chose qui va être commun donc à tous ces élémentsqui héritent de QAbstractButton.Donc là encore c'est plus des concepts d'orienter objet que des concepts purement de PieSidemais c'est bien important de comprendre ces chaînes d'héritage puisque par exempledes fois vous allez aller sur la documentation d'un élément, sur le QPushButton par exemple,
00:07:11 :et vous n'aurez pas toutes les méthodes qui sont disponibles ici.Par exemple ici dans le QPushButton on n'a pas le setText et ça c'est vraiment parcequ'il est défini uniquement dans le QAbstractButton.
00:07:20 :Donc n'hésitez pas à remonter la chaîne comme ceci, comme je vous dis c'est pour çaque j'aime bien cette documentation puisque si on va sur le QPushButton là vous voyezqu'on a donc à peu près la même chose au niveau de la documentation.
00:07:30 :Par contre là je n'ai pas donc le setText et si je souhaite remonter dans la hiérarchieje ne peux pas cliquer puisque là c'est vraiment juste une image et donc ça veutdire qu'il faut que je revienne dans les Qt Widgets pour chercher le QAbstractButtonqui est ici et ensuite aller chercher un petit peu dans cette documentation pour voir
00:07:45 :que le setText est défini ici et ensuite je peux aller voir les différents paramètreset ce qu'on peut faire avec cette méthode.Donc voilà pour les différentes documentations, là encore je vous invite à aller essayertout ça de votre côté, vraiment le point très important à retenir ici c'est cette
00:07:59 :notion d'héritage et le fait que donc vous avez différentes méthodes qui peuvent êtredéfinies à différents endroits et qu'en fait tous les widgets que vous allez utiliser,que ce soit les LineEdit, les ListWidget, les PushButton et bien tout ça en fait aufinal ça hérite de QWidget qui est vraiment l'élément principal qui nous permet de
00:08:16 :faire une fenêtre qui est donc l'élément le plus basique qui est tout simplement uncadre avec rien dedans et ensuite tous les widgets comme les LineEdit, les boutons, lesListWidget etc ce sont juste des déclinaisons de ce widget et donc tous ces éléments,tous ces widgets comme les PushButton etc ils ont ces méthodes qui sont disponibles qui
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.