事前に作成されたコード ファイルを色分けして表示するために、いくつかの Perl/Tk コードを作業中です。プログラムは問題なく色付けされ、表示されています。私の唯一の問題は、ウィンドウのサイズを小さく変更すると、新しいウィンドウ サイズに合わせて動的にサイズ変更するのではなく、スクロールバーとテキスト ウィンドウが消えることです。サイズ変更時にスクロールバー、テキスト領域などが完全に表示されるようにコードを修正する方法はありますか? ご協力いただきありがとうございます。
表示されるテキストは解析され、変数 $macro として渡されます。テキストを解析するためのサブルーチンと色付けするためのコードは省略しました。問題なく動作しているようで、書式設定の指示が含まれていないため、サイズ変更の問題に関与する可能性は非常に低いと思います。これが私のコードです:
my $mw = ( MainWindow->new );
$mw->Button(
-text => "Close Window",
-command => sub {exit}
)->grid(
-row => 2,
-column => 2,
-columnspan => 4,
-sticky => "nsew",
-padx => 3,
-pady => 3
);
$mw->title("MacroView $arg");
my $fullpathbar = $mw->Label(
-textvariable => \$fullpath,
-font => "{Courier} 12 {normal}"
)->grid(
-row => 0,
-column => 0,
-columnspan => 5,
-sticky => "nsew",
-padx => 3,
-pady => 3
);
my $tb = $mw->Scrolled( "Text", -font => "{Courier} 12 {normal}" )->grid(
-row => 1,
-column => 0,
-columnspan => 6,
-sticky => "nsew",
-padx => 3,
-pady => 3
);
my $rw = $mw->Label(
-textvariable => \$rwtext,
-font => "{Courier} 12 {normal}"
)->grid(
-row => 2,
-column => 0,
-sticky => "nsew",
-padx => 3,
-pady => 3
);
my $scrollbar = $mw->Scrollbar( -orient => 'horizontal' );
$scrollbar->configure( -command => [ 'xview', $fullpathbar ] );
$scrollbar->grid(
-row => 0,
-column => 5,
-sticky => "nsew",
-padx => 3,
-pady => 3
);
$tb->insert( 'end', $macro );
$tb->configure( -state => 'disabled' );
MainLoop;
編集: 解決策は、MainLoop の呼び出しの前に次のコード行を追加することでした。
my $columns;
my $rows;
my $i;
($columns, $rows) = $mw->gridSize();
for ($i=0;$i<$columns;$i++){
$mw->gridColumnconfigure($i, -weight=>1);
}
for ($i=0;$i<$rows;$i++){
$mw->gridRowconfigure($i, -weight=>1);
}