Votre exemple de code contient quelques bogues (*), et vous ne savez pas exactement ce que vous voulez faire. Voulez-vous ajouter la valeur actuelle de la zone de liste déroulante à la liste déroulante ou la valeur que vous souhaitez ajouter provient d'un autre emplacement?
Voici une solution qui ajoute la valeur actuelle de la liste déroulante à la liste. Il utilise les versions intégrées de la combobox, de l'étiquette et des widgets de boutons. Quel que soit le widget combobox que vous utilisez probablement fonctionne de manière similaire, mais peut-être pas exactement. (*) Button, Label et ComboBox ne sont pas des widgets standard - vouliez-vous dire "button", "label" et "ttk :: combobox" ou utilisez-vous des widgets personnalisés ?. De plus, vous avez oublié d'utiliser la grille pour gérer la liste déroulante et l'étiquette, et vos procs attendent des arguments mais vous n'en transmettez aucun).
Cette solution fonctionne avec tcl/tk 8.5 et intégré TTK :: widget combobox:
package require Tk 8.5
set ff [frame .f]
set label [label $ff.label -text "Name:" ]
set name [ttk::combobox $ff.name -textvariable name]
set addButton [button $ff.addButton -text "+" -width 1 \
-command [list addNameToComboBox $name]]
set removeButton [button $ff.removeButton -text "-" -width 1 \
-command [list removeNameFromComboBox $name]]
grid $label $name
grid $ff.addButton -row 0 -column 2 -sticky w
grid $ff.removeButton -row 0 -column 3 -sticky sw -padx 5
pack $ff -side top -fill both -expand true
proc addNameToComboBox {name} {
set values [$name cget -values]
set current_value [$name get]
if {$current_value ni $values} {
lappend values $current_value
$name configure -values $values
}
}
proc removeNameFromComboBox {name} {
set values [$name cget -values]
set current_value [$name get]
if {$current_value in $values} {
set i [lsearch -exact $values $current_value]
set values [lreplace $values $i $i]
$name configure -values $values
}
}
Il existe de nombreuses implémentations de ComboBox avec tk. Vous n'utilisez pas celui qui est intégré, mais ce n'est pas évident lequel vous utilisez. Pouvez-vous nous dire quelle implémentation de combobox vous utilisez? –