Book HomeMastering Perl/TkSearch this book

6.2. The Scrolled Method

To create a widget and Scrollbars at the same time, use the Scrolled method. Scrolled returns a pointer to the widget created. It is the easiest way to add Scrollbars to a scrollable widget. The Scrolled method creates a Frame that contains the widget and Scrollbar(s). You create them all in one command.

The usage for the Scrolled method is:

$widget = $parent->Scrolled('Widget', 
                             -scrollbars => 'string' [, options ]);

The first argument is the widget to create, such as "Listbox" or "Canvas". The other argument you'll need to use is the -scrollbars option, which takes a string that tells it which Scrollbars to create and where to put them.

The possible values for -scrollbars are "n", "s", "e", "w"; or "on", "os", "oe", "ow"; or some combination of those that combines n or s with an e or w. The "n" means to put a horizontal Scrollbar above the widget. An "s" means to put a horizontal Scrollbar below the widget. The "e" means to put a vertical Scrollbar to the right of the widget. The "w" means to put a vertical Scrollbar to the left of the widget.

You can have a maximum of two Scrollbars for each widget. For instance, we can create one Scrollbar on the "n" side of the widget. It is possible to use "nw" to create two Scrollbars, one on the top and one on the left of the widget. It is not legal to use "ns", because "n" and "s" scroll in the same direction.

The "o" in front of the direction makes that Scrollbar optional. Optional Scrollbars will only display when the size of the widget makes it necessary to scroll the information in the widget. Always list the north or south value first (if you use either) to avoid complaints from the subroutine. Here are some examples to make this clearer:

# Create optional Scrollbar east (to the right) of widget
$lb = $mw->Scrolled("Listbox", -scrollbars => 'oe')->pack;

# Create Scrollbars to south (below) and east (to the right) of widget
$lb = $mw->Scrolled("Listbox", -scrollbars => 'se')->pack;

# Create optional Scrollbars south (below) and east (right) of widget
$lb = $mw->Scrolled("Listbox", -scrollbars => 'osoe')->pack;

# Create Scrollbars to the north (above) and west (to the left) of widget
$lb = $mw->Scrolled("Listbox", -scrollbars => 'nw')->pack;


Library Navigation Links

Copyright © 2002 O'Reilly & Associates. All rights reserved.