Tk::Scrollbar - Widget zu Anzeige einer Bildlaufleiste

Eine Bildlaufleiste (auch: Scroll-Balken, Tk::Scrollbar) ist ein Widget, das an jedem Ende einen Pfeil und im mittleren Teil einen Schiebebalken anzeigt. Die Bildlaufleiste zeigt an, welcher Teil des Widget-Inhalts, dem der Scroll-Balken zugeordnet wurde, sichtbar ist. So ein zugeordnetes Widget kann beispielsweise ein Text-Widget sein, das mehr Inhalt hat, als auf einmal angezeigt werden kann. Die Position und die Größe des Schiebebalkens geben an, welcher Bereich des Dokuments sichtbar ist.

Beispiel: ein horizontaler Scroll-Balken an einem Text-Widget belegt die Hälfte der Bildlaufleiste und liegt auf der linken Seite an. Das bedeutet, dass die linke Hälfte des Inhalts des text-Widgets sichtbar ist.

Bildlaufleiste an Text-WidgetScroll-Balken für Tk::Text

#!perl

use strict;
use warnings;
use utf8;
use Tk;

my $mw = Tk::MainWindow->new();

my $separate_frame = $mw->Frame;
my $txt = $separate_frame->Text(
	-wrap => 'none',
	-width => 30,
	-height => 3,
);
$txt->insert('end', 'W' x 60 . "\nneue Zeile");

my $scrollbar_vertical = $separate_frame->Scrollbar(
	-orient => 'v',
	-command => [yview => $txt]
);
my $scrollbar_horizontal = $separate_frame->Scrollbar(
	-orient => 'h',
	-command => [xview => $txt]
);
$txt->configure(
	-yscrollcommand => ['set', $scrollbar_vertical],
	-xscrollcommand => ['set', $scrollbar_horizontal],
);
$txt->grid(-row => 0, -column => 0, -sticky => 'nswe');
$scrollbar_vertical->grid(-row => 0, -column => 1, -sticky => 'ns');
$scrollbar_horizontal->grid(-row => 1, -column => 0, -sticky => 'we');
$separate_frame->gridRowconfigure(0, -weight  => 1);
$separate_frame->gridColumnconfigure(0, -weight  => 1);

$separate_frame->pack(-fill => 'both', -expand => 1,);

$mw->MainLoop();
exit(0);

Der einfache Weg: Scrolled

In Perl/Tk gibt es einen sehr einfachen Weg, um Scrollbalken an ein Widget zu koppeln: das Widget Tk::Scrolled. So kann ein Textfeld beispielsweise auf diese Art schnell und bequem mit Scroll-Balken versehen werden:

#!perl

use strict;
use warnings;
use Tk;

my $mw = tkinit();

my $scrtxt = $mw->Scrolled('Text',
    -scrollbars => 'se',
)->pack(-fill => 'both');

$mw->MainLoop();
exit(0);
Top