我正在使用循环在perl tk中创建一个检查按钮列表。
$i=1;
$n=5;
@x=1;
while($i <= $n){
$mw->Checkbutton(->text=>$i,-variable=>\$ckval,->command=>sub{
if($ckval){print $i}
})->pack;
$i=$i+@x;
}
i的正确值打印在屏幕上,但似乎选中了所有的复选框。我该如何避免这种情况?提前谢谢。
答案 0 :(得分:0)
所有检查按钮都共享相同的变量$ ckval。也许你想要一个radiobutton?
答案 1 :(得分:0)
@Slaven是对的:你使用的是同一个变量。您可以使用哈希表或数组。
my $i=1;
my $n=5;
my $incr=1;
my @ckval;
while($i <= $n){
$mw->Checkbutton(-text=>$i,-variable=>\$ckval[$i],->command=>sub{
if($ckval[$i]){ print $i; }
})->pack;
$i=$i+$incr;
}