Not sure if this will fit the bill, but here's what I threw together using an array:
package require Iwidgets
proc getMenu {} {
global members
set _selected [.optionlist get]
puts "user id is [lindex [array get members $_selected ] 1]"
}
pack [iwidgets::optionmenu .optionlist -command getMenu]
array set members {John 0 Jane 1 Jack 2 Janet 3}
foreach user [array names members] {
.optionlist insert end $user
}RS wonders what the bill was, or who Tim is... LV noticed that this page links to one of the question pages, and so assumes that Tim must have asked a question back in December and fits the bill is an English expression meaning this should meet the requirements that you have stated.