2

事前に作成されたコード ファイルを色分けして表示するために、いくつかの 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);
}
4

0 に答える 0