type d'événement sur la valeur de changement pour les widgets ou de l'utilisation technique .trace_variable ()?

StackOverflow https://stackoverflow.com/questions/4165164

Question

Y at-il un type de valeur sur changement événement pour les widgets d'entrée de données comme entrée, texte, Spinner, Checkbutton, Radiobutton? En en valeur le changement, je veux dire la capacité à détecter lorsque la valeur d'un widget a changé en raison de l'entrée du clavier ou couper / supprimer / coller (et texte edit_undo / edit_redo) activité? Je ne vois pas un tel cas décrit dans la documentation de l'événement Tkinter [1].

La bonne technique pour relier les variables de Tkinter en widget valeurs que je veux surveiller et utiliser ces variables' .trace_variable ( « w », ...) des méthodes pour se lier à des changements de valeur? Cela semble être la bonne approche, mais je n'ai pas vu beaucoup de trace_variable () utilisé dans le code source de l'application Tkinter que j'ai étudié ... me conduit à faire preuve de prudence sur l'utilisation de cette approche.

[1] http://infohost.nmt.edu/tcc /help/pubs/tkinter/events.html

Était-ce utile?

La solution

Différents widgets appellent des solutions différentes. Par exemple, les boutons de contrôle et des boutons radio ont une option de commande, et avec une entrée widget que vous pouvez utiliser les fonctions de validation intégrée.

Pour tous les widgets qui peuvent être liés à une variable, faire une trace variable est une solution commune. Le widget texte est une exception puisque vous ne pouvez pas l'associer à une variable sans beaucoup d'effort.

Dans le tcl / tk monde j'associe tous mes widgets à un seul tableau (le nom de tcl pour une carte de hachage / dictionnaire), puis mettre une seule trace sur le tableau. Malheureusement tkinter ne supporte pas directement tcl tableaux. Cependant, le soutien est un peu facile à pirater Pour plus d'informations, voir ma réponse à cette question. Comment faire pour exécuter un code à chaque fois qu'une valeur change Tkinter widgets

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top