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