use Tk; my $mw = MainWindow->new(); my $fr = $mw->Frame(); my $scrollx = $fr->Scrollbar(-orient => 'horizontal'); my $scrolly = $fr->Scrollbar(); my $ltext = $fr->Text(-width => 5, -height => 30, -wrap => 'none', -background => 'black', -foreground => 'green', -borderwidth => 0, -selectbackground => 'white', -selectforeground => 'blue', -insertbackground => 'red', ); my $rtext = $fr->Text(-width => 80, -height => 30, -wrap => 'none', -xscrollcommand => ['set' => $scrollx], -yscrollcommand => ['set' => $scrolly], -background => 'lightgreen', -foreground => 'black', -selectbackground => 'black', -selectforeground => 'orange', -borderwidth => 0, ); $scrollx->configure(-command => ['xview' => $rtext]); # Den Scrollbalken so konfigurieren, dass er alle Listboxen scrollt: $scrolly->configure(-command => sub {$ltext->yview(@_); $rtext->yview(@_); } ); # Diese Methode wird aufgerufen, wenn eine der Textboxen mit der Tastatur # gescrollt wird. Sie sorgt dafür, dass der Scrollbalken die Veränderung # wiedergibt und die andere Textbox mitgescrollt werden. sub scroll_textboxen { my ($text, $textboxes, @args) = @_; $scrolly->set(@args); # Dem Scrollbalken mitteilen, # was angezeigt wird my ($top, $bottom) = $text->yview(); # Ausschnitt des gescrollten # Textfeldes auslesen for my $t (@$textboxes) { # Alle Textboxen auf diesen Aus- $t->yviewMoveto($top); # schnitt setzen. } } # sub scroll_listboxes $ltext->configure(-yscrollcommand => [ \&scroll_textboxen, $ltext, [$ltext, $rtext], ] ); $rtext->configure(-yscrollcommand => [ \&scroll_textboxen, $rtext, [$ltext, $rtext], ] ); $scrollx->pack(-side => 'bottom', -fill => 'x', ); $scrolly->pack(-side => 'right', -fill => 'y', ); $ltext->pack(-side => 'left', -fill => 'y', ); $rtext->pack(-side => 'left', -fill => 'both', -expand => 1, ); $fr->pack(-side => 'left', -fill => 'both', -expand => 1, ); for (1..200) { $_ = ' ' x (5-length($_)) . $_; $ltext->insert('end', "$_\n"); $rtext->insert('end', $_ x 50 . "\n"); } $ltext->insert('end', " 201"); $rtext->insert('end', " 201" x 50); $ltext->focus(); MainLoop();