in perl Tk 我想问一下在使用 -command 选项时如何获取调用小部件。
我有一个对话框小部件,它是由以前未知数量的条目动态创建的。有条目小部件,每个小部件旁边都有一个按钮,可以在其中浏览条目的可能(有用)字符串。
因此,如果按下第二个条目旁边的按钮,结果应存储在第二个条目中,依此类推。
代码如下所示。
my $count = 0;
my @name = ();
my @val = ();
my @edit = ();
my @button = ();
my $fr = $wind->Frame->pack;
foreach ( @outputs ) {
$name[$count] = helper::trim($_);
$val[$count] = '';
$fr->Label(-text => $name[$count])->grid(-row => $count, -column => 0, -sticky => 'w');
$edit[$count] = $fr->Entry(-textvariable => $val[$count], -width => 30)->grid(-row => $count, -column => 1);
$button[$count] = $fr->Button(-width => 20, -text => 'Select',
-command => sub { &select($val[$count], $edit[$count]); }
)->grid(-row => $count, -column => 2);
$count++;
}
但是,由于 &select 是在构建完整对话框后调用的$count它始终位于最后一个值上,并且我没有得到我按下的按钮的信息。行为
-command => sub { &select(@val, @edit, $count); }
也没用。
有没有办法获取调用子例程的小部件(这样我就可以在相应的按钮中以某种方式存储必要的信息)或在这样的调用中使用实际值(此处$count)?
此致敬意。
在
回调中:
my $caller = $Tk::widget;