I'm not sure what you want to do, a Frame can't be scrolled, but the Pane can. You can connect scrollbars with the xscrollcommand or yscrollcommand. Here is an example for connecting the yscroll for a bunch of listboxes. You can try a similar techique for your widgets.
#!/usr/bin/perl
use warnings;
use strict;
use Tk;
my $list;
my $parent;
my $mw = MainWindow->new();
$mw->title("Listbox");
$mw->geometry("600x300+100+100");
$mw->Button(
-text => "Exit",
-command => sub { exit }
)->pack( -side => 'bottom', -fill => 'x' );
$parent = $mw->Listbox()->pack( -side => 'left', -fill => 'y', -expand
+ => 1 );
my $yscroll = $parent->Scrollbar(-orient => 'vertical');
my $listboxes = [
$parent->Listbox(), $parent->Listbox(),
$parent->Listbox(), $parent->Listbox(),
];
foreach $list (@$listboxes) {
$list->configure(
-yscrollcommand => [ \&scroll_listboxes, $yscroll, $list, $li
+stboxes ],
);
}
$yscroll->configure(
-command => sub {
foreach $list (@$listboxes) {
$list->yview(@_);
}
}
);
$yscroll->pack( -side => 'left', -fill => 'y' );
my $count = 0;
foreach $list (@$listboxes) {
$list->insert(
'end', "one-$count", "two-$count", "three-$coun
+t",
"four-$count", "five-$count", "six-$count", "seve
+n-$count",
"eight-$count", "nine-$count", "ten-$count", "elev
+en-$count",
"twelve-$count", "thirteen-$count", "fourteen-$count", "fift
+een-$count",
"sixteen-$count", "seventeen-$count", "eighteen-$count", "nine
+teen-$count",
"twenty-$count"
);
$count++;
$list->pack( -side => 'left', -fill => 'y', -expand => 1 );
}
MainLoop;
sub scroll_listboxes {
my ( $sb, $scrolled, $lbs, @args ) = @_;
$sb->set(@args);
my ( $top, $bottom ) = $scrolled->yview();
foreach $list (@$lbs) {
$list->yviewMoveto($top);
}
}
##############################################################
I'm not really a human, but I play one on earth.
flash japh
|