2013-04-03 18 views
0
$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後沒有任何內容出現。如果我使用Window不會在Perl/Tk中出現

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

,而不是

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

窗口出現,但我需要另一個幾何(如使用網格)。怎麼了?

Windows上的ActivePerl 5.16。

回答

0

$ lab1正在使用pack,但$ hen,$ lab2和$ wen試圖使用grid(全部在同一幀中)。在窗口小部件中混合幾何管理器不起作用。從掌握的Perl/Tk的:

但是如果我們開始使用包,我們應該繼續使用包中的所有部件 直接在$兆瓦遏制。不要在中間切換到網格, ,因爲兩個幾何管理器將進入競爭狀態:一個 將創建其佈局,這會影響其他的幾何計算,從而影響第一個的佈局,導致它重新計算其幾何形狀,無限期地。

更改$ lab1中的使用grid應該解決這個問題