如何在Ruby Tk中动态更改组合框中的值

如何在Ruby Tk中动态更改组合框中的值,ruby,combobox,refresh,tk,Ruby,Combobox,Refresh,Tk,想法很简单:我有两个组合框。第二个参数应根据从第一个参数中选择的参数重新设置其值 # combobox 1: $shape = TkVariable.new $combobox_1 = Tk::Tile::Combobox.new(parent) { textvariable $shape; values ['IPE', 'HEA']} # combobox 2: $size = TkVariable.new $combobox_2 = Tk::Tile::Combobox.new(paren

想法很简单:我有两个组合框。第二个参数应根据从第一个参数中选择的参数重新设置其值

# combobox 1:
$shape = TkVariable.new
$combobox_1 = Tk::Tile::Combobox.new(parent) { textvariable $shape; values ['IPE', 'HEA']}

# combobox 2:
$size = TkVariable.new
$combobox_2 = Tk::Tile::Combobox.new(parent) { textvariable $size; values $size_list}

# action
$combobox_1.bind("<ComboboxSelected>") {
  case $shape
  when 'IPE' then $size_list = [80, 100, ...]
  when 'HEA' then $size_list = [90, 130, ...]
  end
  }
#组合框1:
$shape=TkVariable.new
$combobox_1=Tk::Tile::combobox.new(父项){textvariable$shape;value['IPE','HEA']}
#组合框2:
$size=TkVariable.new
$combobox_2=Tk::Tile::combobox.new(父项){textvariable$size;values$size_list}
#行动
$combobox_1.bind(“”){
case$shape
当'IPE'时,则$size_list=[80100,…]
当'HEA'时,则$size_list=[90130,…]
结束
}

但什么也没发生。combobox 2似乎没有意识到其值已更改。如何解决此问题?

这不起作用,您使用此变量创建组合框,但更改它不会更改组合框

我想你要找的是


set
似乎将所有值放在一行中,但不创建列表。出于好奇,我用
值切换了
设置
,得到了一个刷新的列表!谢谢你的指导意见。@ericMTR谢谢你指出,请更正我的答案以供进一步参考
when 'IPE' then $combobox_2.values([80, 100, ...])