使用Perl Tk调整窗口大小会导致滚动条,文本消失

时间:2014-11-03 14:48:31

标签: perl resize window tk perltk

在工作时使用一些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);
}

0 个答案:

没有答案