Problème avec customtkinter et son widget button
Résolu/Fermémouette_ombrageuse - 8 août 2022 à 21:54
3 réponses
Bonsoir, généralement quand notre code bogue, il ne faut pas imputer la faute à la bibliothèque dont on se sert, mais plus à une erreur (syntaxe, logique, inattention) commise par nous-même, d'autant plus lorsqu'on est débutant et que l'on voit des bogues partout.
Avant de présenter du code, il faudrait quand même le rendre présentable, c-à-d lisible et compréhensible. Si je te présente une classe obscure contenant des méthodes avec des noms tout aussi obscurs contenant des variables également nommées avec random.shuffle, le tout sans aucun commentaire, comment veux-tu que l'on y comprenne quelque chose ?
Pour programmer, il faut avoir un minimum de rigueur.
Pourquoi as-tu besoin de cette bibliothèque customtkinter ?
Je conçois que tu désires une interface un peu plus jolie, mais avant tout il vaudrait mieux te familiariser avec cette bibliothèque graphique qu'est tkinter et en comprendre les rouages.
Ensuite il n'y a pas que tkinter comme gui si tu tiens à réaliser de jolies fenêtres, qt ou encore wx sont à la base un peu plus "travaillées", mais plus difficle à appréhender.
Sinon, tu regardes ce que donnent les exemples de code de cette bibliothèque pour t'assurer que cela fonctionne correctement.
https://github.com/TomSchimansky/CustomTkinter#example-program
https://github.com/TomSchimansky/CustomTkinter/tree/master/examples
Bonjour, pour information, lorsque tu fais :
button["command"] = button_function
Cela utilise la méthode __setitem__, une façon de définir des valeurs d'un objet comme dans un dictionnaire. Si tu es curieux, tu jettes un oeil au code source pyhton de tkinter, tu cherches cette méthode __setitem__, et oh on tombe sur :
def __setitem__(self, key, value): self.configure({key: value})
Comme quoi cette façon est une facilité ajoutée au dev de tkinter sur python.
Mais oh, encore mieux avec ta bibliothèque, on peut directement changer la valeur de command en faisant :
button.command = button_function
Le dev de cette bibliothèque a jugé bon de faire certaines options de configuration tkinter des attributs de classes, suoer sympa non =)
N'hésite pas à consulter la doc, voir examiner le code source des bibliothèques python ;)
8 août 2022 à 13:22
Ok merci. Le fait que le dev de custom n'ait pas gardé le même principe que la méthode __setitem__,n'était pas forcément d'une logique implacable pour moi. Cela dit pas besoin d'être condescendant non plus j'ai pas 8ans. On n'a pas tous la même expérience. Sinon à quoi bon servent les forums? Bref plus de bienveillance et moins de condescendance vis à vis des débutants serait bienvenu dans ce forum. A+++
Modifié le 8 août 2022 à 07:29
Hello,
Tout d'abord merci d'avoir répondu aussi vite.
Oui j'avoue mon code n'est pas explicite. Je pourrais le modifier pour le rendre plus visible mais on va faire plus simple.
Prenons le premier exemple que tu m'as envoyé https://github.com/TomSchimansky/CustomTkinter#example-program
Là le code fait bien ce qu'on lui demande de faire pas de souci jusque là.
Et si je transforme le code comme ceci en utilisant seulement tkinter et en modifiant la ligne 14 et 15:
Toujours pas de souci jusque là aussi, le code fait bien ce qu'on lui demande.
Par contre si je reprend cette dernière modification du code et que je change juste tkinter par customtkinter :
Là il ne se passe plus rien lorsque l'on clique sur le bouton...Y-a-t-il une explication à cela?
Seul moyen de pouvoir obtenir ce que l'on veut c'est de remplacer la ligne 15 par :
button.configure(command = button_function)
Ce qui n'est pas nécessaire avec tkinter.