多かれ少なかれ古いTkスクリプトをTkxに変換していますが、画面中央にパラメータとして渡されたウィンドウの位置を変更する次の関数用のポートが残っています。私はこれをMainLoopを呼び出す直前に呼びましたが、Tkがreqwidthとreqheightの値を明らかに決めていました。必要に応じてPerl Tkxのメインウィンドウの位置を変更するにはどうすればよいですか?
sub CenterWindow
{
# Args: (0) window to center
# (1) [optional] desired width
# (2) [optional] desired height
my($window, $width, $height) = @_;
$window->idletasks;
$width = $window->reqwidth unless $width;
$height = $window->reqheight unless $height;
my $x = int(($window->screenwidth/2) - ($width/2));
my $y = int(($window->screenheight/2) - ($height/2));
$window->geometry($width . "x" . $height . "+" . $x . "+" . $y);
}
idletasksは)(TKX ::更新に変更することができますが、私はこの古いTkのルーチンの窓特定の部分のための任意の明白な翻訳を見つけるために、途方に暮れています。 Tkxはreqwidth、reqheight、screenwidth、またはcget()で取り出せるスクリーン高さに相当するようには見えません。
Tkのパックレイアウトではなく、Tkxでグリッドレイアウトを使用していますか?関連性はありますか?
私はWindows Vista上でActivePerl 5.10を実行しています。