Le widget BWidget ComboBox vous permet de remplir un champ d'entrée avec une valeur. Je voudrais appliquer uniquement des caractères spécifiques dans ce champ (par exemple seulement [a-z0-9]). A cet effet, je voudrais utiliser Tcl/Tk de -validatecommand (ou -vcmd pour faire court), comme vous le faites avec le widget standard « entrée »:Valider l'entrée avec ComboBox de BWidget
proc ValidateMyEntry { value } {
# Check if it's alphanum string
if ![regexp {^[-a-zA-Z0-9]*$} $value] {
return 0
}
return 1
}
entry .my_entry -width 20 -textvariable myVar -validate key -vcmd {ValidateMyEntry %P}
Il semble ComboBox ne supporte pas -validatecommand . Quel est le meilleur travail autour?
Oui, je peux utiliser -modifycmd, mais il déclenche seulement après un La valeur (illégale) a été renseignée. Donc si je veux empêcher un espace, avec -vcmd l'espace ne sera même pas inséré, alors qu'avec modifycmd il est inséré et vous devriez le supprimer plus tard. – Roalt
J'ai une restriction sur l'utilisation de Tcl/Tk 8.4 pour le moment. ttk :: combobox est inclus dans Tcl/Tk 8.5. – Roalt
L'autre option (que je n'ai pas testée) consiste à utiliser l'option -textvariable et à ajouter une trace à la variable. Dans tous les cas, vous devrez supprimer les caractères non pris en charge. La dernière option, et celle-ci nécessite un travail supplémentaire, est de capturer le "focus in" de votre combobox et montrer une entrée dans les mêmes coordonnées. C'est difficile mais j'ai fait quelque chose de similaire il y a quelques années. –