$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。
答案 0 :(得分:0)
$ lab1正在使用pack
,但是$ hen,$ lab2和$ wen正在尝试使用grid
(全部在同一帧中)。在窗口小部件中混合几何管理器不起作用。来自Mastering Perl / Tk:
但是如果我们开始使用pack,我们应该继续使用pack 小部件直接包含在$ mw中。不要在中间切换到网格, 因为两个几何管理器将进入竞争状态:一个 将创建其布局,这将影响几何计算 其他,影响第一个的布局,导致它重新计算 无限的几何形状。
将$ lab1更改为使用grid
应修复