perl Tk中的checkbutton正在选择所有选项

时间:2014-03-31 05:41:29

标签: perl perltk

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

2 个答案:

答案 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;
}