You need to do several things to get a scrollable Canvas of the kind you've described.
Here is an example which does what you've asked for, which I've explained below:
#!/usr/bin/perl -w + use Tk; use strict; + my $mw = MainWindow->new; my $c = $mw->Scrolled('Canvas', -width => 100, -height => 100, -background =>'blue', -scrollregion => [ 0, 0, 500, 500 ] ); $c->pack(-expand => 1, -fill => 'both'); $c->createRectangle(100, 100, 150, 150, -fill => 'yellow'); + MainLoop;
You should use the method 'Scrolled' rather than 'Canvas', and call it with a first argument of 'Canvas'. Also, you need to make the width and height 100, but allow a scrollRegion of 0 to 500 in both directions.
You'll notice that my code draws a yellow square to make it clear where the scrolling is occurring.
As far as rightclick and drag, it's not as simple as you may think. You need to trap the left-mouse click event, and then draw a line/rectangle while the mouse is moving, but the button is still down. It's a lot lower-level than just "drawing a rectangle with the mouse".
I'd recommend that you start by getting a copy of the excellent book "Mastering Perl/Tk", by Steve Lidie & Nancy Walsh, and published by O'Reilly. It gives many great examples which will lead you through the process of becoming a Perl/Tk expert.
In reply to Re: Scrolling and marking by dragging on canvas
by liverpole
in thread Scrolling and marking by dragging on canvas
by tamaguchi
| For: | Use: | ||
| & | & | ||
| < | < | ||
| > | > | ||
| [ | [ | ||
| ] | ] |