【发布时间】:2015-09-29 14:46:13
【问题描述】:
鉴于这个 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'}。
请问我做错了什么,谢谢?
【问题讨论】:
-
总是
use strict; use warnings;。它将为您省去很多麻烦。