窗口没有出现在Perl / Tk中

时间:2013-04-03 07:19:50

标签: perl tk perltk

$mw=MainWindow->new(-title=>'Game of Life');
$frmitems=$mw->Frame;
$frmsettings=$mw->Frame;
$lab1=$frmsettings->Label(-text=>'Size of square:')->pack;
$hen=$frmsettings->Entry(-textvariable=>10);
$lab2=$frmsettings->Label(-text=>' x ');
$wen=$frmsettings->Entry(-textvariable=>10);
$hen->grid($lab2,$wen);
$ststr=$frmsettings->Label(-text=>"Current step: $step")->pack;
$frmitems->grid($frmsettings);
$mw->gridColumnconfigure(0, -pad => 10);
$mw->gridColumnconfigure(1, -pad => 10);
$mw->MainLoop;

这段代码应该是一个简单的窗口。但MainLoop之后什么也没出现。如果我使用

$hen->pack($lab2,$wen);

而不是

$hen->grid($lab2,$wen);
出现

窗口,但我需要另一个几何体(如网格)。怎么了?

Windows上的ActivePerl 5.16。

1 个答案:

答案 0 :(得分:0)

$ lab1正在使用pack,但是$ hen,$ lab2和$ wen正在尝试使用grid(全部在同一帧中)。在窗口小部件中混合几何管理器不起作用。来自Mastering Perl / Tk:

  

但是如果我们开始使用pack,我们应该继续使用pack   小部件直接包含在$ mw中。不要在中间切换到网格,   因为两个几何管理器将进入竞争状态:一个   将创建其布局,这将影响几何计算   其他,影响第一个的布局,导致它重新计算   无限的几何形状。

将$ lab1更改为使用grid应修复