给定这个 Perl/Tkx 代码片段:
@itemList = ({'attrib1' => 'name1', 'attrib2' => 'value1'},
{'attrib1' => 'name2', 'attrib2' => 'value2'});
$row = 0;
foreach $item (@itemList) {
push(@btn_list, new_ttk__button(-text => $item->{'attrib1'}, -command => sub {do_something($item->{'attrib2'});}));
$btn_list[-1]->g_grid(-column => 0, -row => $row);
$row++;
}
(在实际程序中,@itemList 是从用户可编辑的配置文件中填充的。)
我确实看到两个标有“name1”和“name2”的按钮。但是,当我单击任一按钮时,似乎传递给回调的参数总是$itemList[1]->{'attrib2'}
; 即@itemList 数组的最后一个元素的“attrib2”。我想要的是第一个按钮调用do_something($itemList[0]->{'attrib2'}
和第二个调用do_something($itemList[1]->{'attrib2'}
。
我做错了什么,请谢谢你?