Hi tamaguchi,

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.


s''(q.S:$/9=(T1';s;(..)(..);$..=substr+crypt($1,$2),2,3;eg;print$..$/

In reply to Re: Scrolling and marking by dragging on canvas by liverpole
in thread Scrolling and marking by dragging on canvas by tamaguchi

Title:
Use:  <p> text here (a paragraph) </p>
and:  <code> code here </code>
to format your post, it's "PerlMonks-approved HTML":



  • Posts are HTML formatted. Put <p> </p> tags around your paragraphs. Put <code> </code> tags around your code and data!
  • Titles consisting of a single word are discouraged, and in most cases are disallowed outright.
  • Read Where should I post X? if you're not absolutely sure you're posting in the right place.
  • Please read these before you post! —
  • Posts may use any of the Perl Monks Approved HTML tags:
    a, abbr, b, big, blockquote, br, caption, center, col, colgroup, dd, del, details, div, dl, dt, em, font, h1, h2, h3, h4, h5, h6, hr, i, ins, li, ol, p, pre, readmore, small, span, spoiler, strike, strong, sub, summary, sup, table, tbody, td, tfoot, th, thead, tr, tt, u, ul, wbr
  • You may need to use entities for some characters, as follows. (Exception: Within code tags, you can put the characters literally.)
            For:     Use:
    & &amp;
    < &lt;
    > &gt;
    [ &#91;
    ] &#93;
  • Link using PerlMonks shortcuts! What shortcuts can I use for linking?
  • See Writeup Formatting Tips and other pages linked from there for more info.