in reply to A Canvas and a Scrollbar with Tk
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')]); }
|
|---|