如何将菜单值传递给子菜单
How to pass menu value to submenu
menubutton .mb -text Example -menu .mb.menu
pack .mb -padx 10 -pady 10
set m [menu .mb.menu -tearoff 1]
$m add cascade -label A -menu $m.sub1
$m add cascade -label B -menu $m.sub1
$m add cascade -label C -menu $m.sub1
set m2 [menu $m.sub1 -tearoff 0]
$m2 add radio -label x -variable fruit -value apple
$m2 add radio -label y -variable fruit -value orange
$m2 add radio -label z -variable fruit -value kiwi
假设有人点击 B 然后点击 z,我想打印 Bz。
假设有人点击 A 然后点击 y,我想打印 Ay。
怎么做?
即它应该将菜单值传递给子菜单值
当您像这样在多个级联条目中使用单个菜单时,您无法区分它们。为了区分它们,您应该创建三次子菜单并通过(如下所示)绑定回调或给每个回调一个自己的 -postcommand
.
menubutton .mb -text Example -menu .mb.menu
pack .mb -padx 10 -pady 10
set m [menu .mb.menu -tearoff 1]
foreach cmd {sub1 sub2 sub3} tag {A B C} {
set m2 [menu $m.$cmd -tearoff 0]
foreach label {x y z} value {apple orange kiwi} {
$m2 add radio -label $label -variable fruit -value $value \
-command [list puts $tag$label]
}
# I prefer to add the cascades after making the submenu
$m add cascade -label $tag -menu $m2
}
menubutton .mb -text Example -menu .mb.menu
pack .mb -padx 10 -pady 10
set m [menu .mb.menu -tearoff 1]
$m add cascade -label A -menu $m.sub1
$m add cascade -label B -menu $m.sub1
$m add cascade -label C -menu $m.sub1
set m2 [menu $m.sub1 -tearoff 0]
$m2 add radio -label x -variable fruit -value apple
$m2 add radio -label y -variable fruit -value orange
$m2 add radio -label z -variable fruit -value kiwi
假设有人点击 B 然后点击 z,我想打印 Bz。 假设有人点击 A 然后点击 y,我想打印 Ay。
怎么做? 即它应该将菜单值传递给子菜单值
当您像这样在多个级联条目中使用单个菜单时,您无法区分它们。为了区分它们,您应该创建三次子菜单并通过(如下所示)绑定回调或给每个回调一个自己的 -postcommand
.
menubutton .mb -text Example -menu .mb.menu
pack .mb -padx 10 -pady 10
set m [menu .mb.menu -tearoff 1]
foreach cmd {sub1 sub2 sub3} tag {A B C} {
set m2 [menu $m.$cmd -tearoff 0]
foreach label {x y z} value {apple orange kiwi} {
$m2 add radio -label $label -variable fruit -value $value \
-command [list puts $tag$label]
}
# I prefer to add the cascades after making the submenu
$m add cascade -label $tag -menu $m2
}