0

我正在使用循环在 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 的正确值打印在屏幕上,但似乎所有的复选按钮都被选中了。我该如何避免这种情况?提前致谢。

4

2 回答 2

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;
}
于 2014-12-30T02:37:28.800 回答
0

所有的检查按钮都共享同一个变量 $ckval。也许你想要一个单选按钮?

于 2014-04-03T18:23:42.707 回答