- 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
Christian Aucane
8 janvier 2023 - 08 janvier 2023 à 17:10
checkConversation résolue
1 réponse
Pas de couleurs
Bonjour,Mes boutons sont beaucoup moins colorés que toi, sais-tu d'où ça peut venir ?
00:00:00 :On a notre fenêtre ici avec deux boutons que l'on fait avec exactement les mêmes lignes de code.Donc déjà ce que je vais faire c'est enlever le deuxième bouton ici et ce qu'on va faire c'estdonc créer notre propre classe qui va hériter de PushButton. Donc on va l'appeler par exemple
00:00:14 :RandomButton et on va la faire hériter de QPushButton. On n'oublie pas donc de faire laméthode init bien entendu pour pouvoir initialiser notre bouton et on utilise super pour appeler laméthode init du QPushButton dont on hérite. On va également rajouter un paramètre dans le init
00:00:31 :ici puisque quand on va créer notre bouton on va lui passer une chaîne de caractère et on va mêmelui passer d'autres éléments par la suite mais ça j'y reviendrai. Donc je vais mettre un paramètre
00:00:40 :ici je vais l'appeler texte tout simplement et on va pouvoir le passer également à notre initpuisque là on va pour l'instant reproduire exactement la même chose que ce qu'on a avecle QPushButton. Donc le QPushButton quand on le crée on lui passe une chaîne de caractère qui
00:00:54 :est le texte que l'on souhaite afficher et donc cette chaîne de caractère moi je vais la passerà mon RandomButton et on va la passer également au init donc ça va faire exactement la mêmechose on va juste initialiser notre QPushButton avec le texte que l'on souhaite afficher. Donc
00:01:09 :pour l'instant ce que je vais faire c'est juste prendre ma classe ici et remplacer le QPushButtonpar ma classe et vous allez voir que rien n'aura changé. Je vais relancer mon script donc là on
00:01:18 :n'a qu'un seul bouton puisque j'ai supprimé le deuxième mais vous voyez qu'on a exactement lamême chose on a bien le texte qui est affiché donc pour l'instant on a juste fait notre propreclasse mais rien n'a changé. Là où ça va devenir beaucoup plus intéressant c'est qu'on va pouvoir
00:01:30 :par exemple rajouter des paramètres donc là plutôt que d'avoir quatre lignes à la suite quipermettent de changer les informations on va pouvoir passer ces informations directement au moment oùje crée mon bouton donc avec le RandomButton on va passer ces informations dans le init en paramètreset on va pouvoir modifier notre bouton comme ceci. Donc je vais prendre tout ça ici je vais le mettre
00:01:49 :à l'intérieur de mon init on va remplacer le bouton random par self puisque là on va travaillerdirectement sur notre instance du RandomButton et pour l'instant là encore si je fais juste çaet que je relance mon script rien n'a changé on a toujours notre bouton. Donc là ce qu'on va faire
00:02:03 :c'est permettre de modifier ces paramètres. Déjà on pourrait se dire que le texte finalement doncle texte que l'on passe ici et bien on ne souhaite avoir aucun contrôle dessus on veut juste créerdes boutons avec un texte aléatoire donc là je pourrais carrément ici enlever ce paramètre texte
00:02:17 :donc ne pas le passer à ma méthode init et juste faire un set texte avec ce paramètre aléatoire.Donc on fait juste un set texte de String.RunRange.999 il faut pas que j'oublie de mettre la
00:02:28 :parenthèse ici pour fermer donc j'ai une deux trois parenthèses et trois parenthèses qui ferment.Donc voilà j'avais juste une parenthèse qui avait disparu donc là ce qu'on fait c'est qu'on ne meton va même pas en fait se donner la possibilité de changer le texte du bouton on va par contre
00:02:40 :mettre d'autres éléments on va mettre par exemple size que par défaut on va mettre à 48 et le sizedonc on va le mettre ici à la place de nos 48. On va mettre un paramètre flat qui par défaut va
00:02:52 :être à false mais on peut le passer à true et donc là à la place du true on va passer le paramètreflat. Set checkable pareil alors là je pense que je vais pas mettre de paramètre on va par défaut
00:03:02 :il va être checkable et pour le style sheet là aussi on pourrait faire quelque chosed'aléatoire donc je pourrais reprendre mon run range et ici le mettre à la place du 255 doncà la place du rouge du vert et du bleu donc là on va juste changer le range pour le mettre entre 0
00:03:18 :et 255 et on va le mettre trois fois ici comme ceci. Donc là encore on ne laisse pas le choix de lacouleur on va juste générer une couleur aléatoire un texte aléatoire et par contre on va donner lapossibilité de changer la taille ou de changer si on a un bouton qui est flat ou pas. Donc là comme
00:03:36 :j'ai des valeurs par défaut je ne suis pas obligé de toucher quoi que ce soit je peux laisser justel'instantiation comme ça et utiliser les valeurs par défaut et on va voir ce que ça donne je lancema fenêtre et là donc on a bien un bouton qui par défaut dans ce cas ci a le flat qui est à false
00:03:49 :donc on a bien le contour et on a une couleur vous voyez aléatoire qui se met. Donc là vous voyezqu'on n'a plus qu'une seule ligne de code qui permet de faire tout ça et si on veut faire desboutons un petit peu différents et ben là on pourrait modifier ces paramètres on pourrait
00:04:01 :dire finalement je vais faire un bouton avec une taille de 96 et le flat on va le passer à true.Et là vous voyez qu'on a quelque chose de beaucoup plus explicite en plus d'avoir une seule ligne decode et d'avoir la modification de notre bouton qui s'effectue directement au moment de l'instantiation
00:04:14 :on a quelque chose qui est très explicite random button on veut faire une taille de 96 et on veutqu'il soit flat. Donc par exemple pour quelqu'un qui lirait notre script c'est beaucoup plus évident
00:04:23 :ce qu'on fait ici plutôt que ce qu'on avait précédemment avec les 4-5 lignes de code. Doncje relance l'interface et là cette fois-ci on a bien un bouton un peu plus grand vous voyez aveccette fois les contours qui ont disparu. Donc là je pourrais facilement créer 10 boutons en les
00:04:35 :mettant dans une boucle donc une range on va en faire 10. Je mets tout ça ici à l'intérieur dema boucle et j'ajoute le bouton dans le layout. On va revenir à une taille de 48 et on pourrait
00:04:46 :même mettre une taille aléatoire en fait on va mettre un range ici également et on va faire unrange entre 20 et 40 comme ça on va avoir des boutons de taille aléatoire le flat à true ettout le reste va changer avec ce qu'on a mis dans le init ici donc avec une couleur aléatoire et le
00:05:00 :checkable. Donc je relance et vous voyez que là on a bien donc une lignée de boutons avec des couleursaléatoires je peux les cocher en cliquant dessus et vous voyez que alors c'est pas très visible icion a une petite différence de taille je vais augmenter le range pour que ce soit un peu plus
00:05:14 :visible on va mettre par exemple 10 et 80 en taille et si je relance vous allez voir que làvoilà on a des boutons qui sont un peu plus grands les uns que les autres. Donc voilà comment faire
00:05:25 :un bouton qui hérite d'un widget existant on peut faire ça avec n'importe quel widget bienentendu là c'est vraiment des concepts d'orienter objet plus que des concepts de pi side mais vousvoyez que cette façon de faire nous permet d'éviter d'avoir des répétitions de lignes decode et d'avoir quelque chose de plus explicite. On pourrait même rajouter bien sûr d'autres
00:05:43 :méthodes ici je pourrais par exemple faire une méthode random color qui irait changer la couleurdu bouton quand on clique dessus donc je vais reprendre ce self style sheet là c'est vraimentjuste pour vous montrer un petit exemple et je vais faire un self clicked point connect selfpoint random color. Donc là ce que je fais c'est juste connecter le signal du bouton à cette
00:06:02 :méthode donc quand on va cliquer sur le bouton en fait on va changer le style sheet pour régénérerune couleur aléatoire et là encore tout ça s'est fait directement à l'intérieur de mon bouton doncj'ai même pas besoin d'y penser quand je regarde mon bouton ici lui il est juste instantié au niveau
00:06:17 :de mon code et ensuite toute la logique se retrouve dans la classe donc dans le widget ici. Donc jerelance et là quand je clique sur le bouton vous voyez que la couleur change à chaque fois que jeclique sur le bouton. Donc voilà pour cet exemple c'est très théorique mais vraiment si vous avez
00:06:30 :des widgets que vous utilisez régulièrement après vous pouvez vous faire vos propres bibliothèquesmoi c'est ce que j'ai fait dans tous les endroits où j'ai travaillé on avait nos bibliothèques dewidgets personnalisés et à chaque fois on ne réinventait pas la roue on avait comme ça deswidgets qu'on pouvait modifier et qui nous permettait d'avoir des comportements très
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.