我使用以下代码显示列表并从用户获取所选条目的数组。
#!/mu/bin/perl
use Tk; use strict; use warnings;
my @selections;
my @choices = ("choice1", "choice2", "choice3", "choice4", "choice5", "choice6", "choice7", "choice8");
my $mw = MainWindow->new(-title=>"ListBox");
$mw->Label(-text => 'Select your choices')->pack();
my $lb = $mw->Listbox(-selectmode => 'extended');
$lb->insert('end', sort @choices);$lb->pack();
$mw->Button(-text => 'Select',
-command => sub {@selections = $lb->curselection;$mw->destroy;})->pack();
MainLoop;
foreach (@selections) {
print $_."\n";
}
此代码可以自行运行,单击按钮后,我可以在MainLoop;
之后执行打印语句。但是,当我在我的程序中调用的子例程中使用此代码(当然没有前3行)时,单击该按钮仅关闭GUI窗口,不执行MainLoop;
语句下面的任何内容。当子程序卡在MainLoop中时,整个程序就会挂起。
对我可能做错了什么的任何建议,我该如何解决这个问题?感谢。