是否可以使用 TK 创建带有滚动条的文本区域,当您滚动另一个移动时,滚动条也会移动?
我要创建的是一个带有标题的文本区域,然后是行标题下方的文本区域,另一个是数据。当您在 Excel 中冻结窗格时,有点像。我在每行的一组数组中都有数据,所以我需要的是一种链接每个文本区域中的滚动条的方法,这样数据中的上下一个也控制行标题,反之亦然,左边右边的数据控制列标题,反之亦然。
可能不可能,但问也无妨
编辑
好的,所以我有一些代码,它几乎可以满足我的要求,但我需要一些帮助才能让它完全工作。代码示例显示,如果您移动一个滚动条,它确实控制另一个文本区域,反之亦然,但它不控制自己的文本区域,有没有办法将多个 xviews 添加到命令中,以便同时移动两个文本区域时间。提前致谢
use Tk;
use Tk::ROText;
my @headers = ( "+----------------+-----+-----+-----+-----+-----+-----+-----+-----+-----+-----+-----+-----+-----+-----+",
"| | M | M | M | M | M | M | M | M | M | M | M | M | M | M |",
"| | P | P | P | P | P | P | P | P | P | P | P | P | P | P |",
"| | L | L | L | L | L | L | L | L | L | L | L | L | L | L |",
"| | R | R | R | R | R | R | R | R | R | R | R | R | R | R |",
"| | D | D | D | D | D | D | D | D | D | D | D | D | D | D |",
"| | F | F | F | F | F | F | F | F | F | F | F | F | F | F |",
"| | D | D | D | D | D | D | D | D | D | D | D | D | D | D |",
"| | S | S | S | S | S | E | E | E | E | E | E | B | B | B |",
"| | O | O | O | O | O | V | V | V | V | V | V | A | A | A |",
"| | A | A | A | A | A | F | F | F | F | F | F | Q | Q | Q |",
"| | K | K | K | K | K | B | C | F | G | H | I | A | A | A |",
"| | 1 | 5 | 6 | 7 | 8 | | | | | | | 1 | 2 | 3 |");
my @info = ( "+----------------+-----+-----+-----+-----+-----+-----+-----+-----+-----+-----+-----+-----+-----+-----+",
"| LHADHRDT | | | | | | | | | | | | | | 1|",
"+----------------+-----+-----+-----+-----+-----+-----+-----+-----+-----+-----+-----+-----+-----+-----+",
"| LHBAERDT | | 4| | 4| | | | | | | | | | |",
"+----------------+-----+-----+-----+-----+-----+-----+-----+-----+-----+-----+-----+-----+-----+-----+",
"| LHEE1RDT | | | 13| | | | | | 48| | | | | |",
"+----------------+-----+-----+-----+-----+-----+-----+-----+-----+-----+-----+-----+-----+-----+-----+",
"| LHLM2RDT | 96| | | | | | | | | | | | | |",
"+----------------+-----+-----+-----+-----+-----+-----+-----+-----+-----+-----+-----+-----+-----+-----+",
"| LHLSERDT | | | | | | | | | | | | | 7| |",
"+----------------+-----+-----+-----+-----+-----+-----+-----+-----+-----+-----+-----+-----+-----+-----+",
"| LHLW1RDT | | | | | | | | | | | 9304| | | |",
"+----------------+-----+-----+-----+-----+-----+-----+-----+-----+-----+-----+-----+-----+-----+-----+",
"| LHUP1RDT | | | | | 160|84385| | | | 271| | | | |",
"+----------------+-----+-----+-----+-----+-----+-----+-----+-----+-----+-----+-----+-----+-----+-----+");
my $mw = MainWindow->new ( -background => "GREY" );
$mw->title("What Gap Issues There Have Been");
$mw->resizable(0, 0);
$mw->focus;
$mw->geometry("600x400");
my $TA1F = $mw->Frame(-width=>5,-height=>5,-foreground=>"BLUE",-background=>"GREY",-borderwidth=>2,-relief=>'groove')->place(-x=>5,-y=>5);
my $TA1 = $TA1F->Scrolled( 'ROText', -scrollbars => 'se', -height => 10)->pack(-side => 'left');
$TA1->configure(-background => "GREY",-wrap=>"none");
$TA1->insert('end', "$_\n") foreach @headers;
my $TA2F = $mw->Frame(-width=>5,-height=>5,-foreground=>"BLUE",-background=>"GREY",-borderwidth=>2,-relief=>'groove')->place(-x=>5,-y=>200);
my $TA2 = $TA2F->Scrolled( 'ROText', -scrollbars => 'se', -height => 10)->pack(-side => 'left');
$TA2->configure(-background => "GREY",-wrap=>"none");
$TA2->insert('end', "$_\n") foreach @info;
$TA1->Subwidget("xscrollbar")->configure(-command => ['xview', $TA2]);
$TA2->Subwidget("xscrollbar")->configure(-command => ['xview', $TA1]);
$mw->focus;
MainLoop;
exit 0;