- 论坛徽章:
- 0
|
网上找到了下面有效的例子:
- use Tk;
- use Tk::Canvas;
- use Tk::Label;
- my $mw = tkinit(-title, 'Canvas');
- #$mw->geometry('250x250');
- my $frame = $mw->Frame(-width, 250, -height, 250)->pack(-fill, 'both', -expand,1);
- my $canvas = $frame->Scrolled('Canvas', -width, 600, -height, 600,
- -scrollbars, 'osoe'
- )->pack(-fill,'both',-expand,1);
- my $btn = $mw->Button(-text, "Add Stuff", -command,\&addStuff)
- ->pack();
- MainLoop;
- sub addStuff{
- $canvas->createText(500, 500, -text, "Some text @ 500, 500." );
- $canvas->createRectangle( 50, 50, 110, 110, -fill, 'red');
- $canvas->createRectangle( 150, 150, 210, 210, -fill, 'green');
- $canvas->createRectangle( 250, 250, 310, 310, -fill, 'blue');
- $canvas->createText(20, 20, -text, "Some text @ 20, 20." );
- #
- # Your can use an array for your bounding box
- # commented out to show both ways to set the scrollregion
- # Just make sure you are 1 less on lower right and bottom
- # Or you will have out of bounds array... easy to forget
- # if you don't use a frame with your canvas
- #$canvas->configure(-scrollregion => [ 0, 0, 599, 599]);
- $canvas->configure(-scrollregion => [$canvas->bbox('all')]);
- }
复制代码 |
|