J'ai fait quelques recherches mais je n'ai rien trouvé à propos de ce sujet. Peut-être parce que c'est une connaissance commune des programmeurs (je ne suis pas un programmeur, j'ai appris par nécessité), ou parce que je vais dans le mauvais sens.Comment gérer efficacement les états des boutons dans Tkinter
Je voudrais des idées/suggestions sur la façon de gérer les états des boutons pour une interface graphique. Par exemple, si j'ai un programme qui permet à l'utilisateur d'importer et de traiter des données, certaines fonctions devraient être inaccessibles jusqu'à ce que les données aient été importées avec succès, ou si elles veulent représenter graphiquement certaines données, frapper le bouton 'graphique' ou 'exporter'. Même dans les programmes simples, j'ai construit ces relations semble se compliquer rapidement. Il semble simple de dire "L'utilisateur ne devrait pas être en mesure d'appuyer sur le bouton" A "jusqu'à ce que" B "et" C "soient terminés, alors" A "devrait être désactivé si le bouton" D "ou" Annuler ". c'est beaucoup à suivre pour un bouton jusqu'à présent, je l'ai essayé deux choses:.
Modification/vérification des états de bouton dans les fonctions de rappel pour le bouton Ainsi, dans l'exemple ci-dessus, j'aurais code. Boutons de rappel de B et C pour vérifier si A doit être activé Et dans les boutons D et Annuler les callbacks Je devrais avoir le code pour désactiver le bouton A. Cela devient compliqué rapidement et est difficile à maintenir comme le code change
Définition des variables booléennes dans chaque rappel de boutons (ou juste vérifier les états plus tard en utilisant cget()) et en vérifiant les variables dans une fonction d'interrogation pour déterminer quels boutons devraient être activés ou désactivés.
Je ne suis pas sûr de cela. Je voudrais rendre le code aussi court et facile à comprendre que possible (et facile à éditer plus tard), mais je n'aime pas l'idée d'interroger tous les états des boutons toutes les quelques centaines de millisecondes juste pour la gestion des boutons. Vous pouvez étendre la même idée à des cases à cocher, des éléments de menu, etc ... mais j'aimerais ici ce que d'autres ont fait et pourquoi ils le font comme ils le font.