in reply to Re: Unable to get rid of Perl::Tk Chart::Lines zoom rectangles
in thread Unable to get rid of Perl::Tk Chart::Lines zoom rectangles

This is somewhat close to what I'm trying to do. However, I want the rectangle to dissapear after I'm done selecting an area. Here is the maplog database, just put it near my script! http://pashanoid.ru/sqlite.db

Thank you!

  • Comment on Re^2: Unable to get rid of Perl::Tk Chart::Lines zoom rectangles

Replies are listed 'Best First'.
Re^3: Unable to get rid of Perl::Tk Chart::Lines zoom rectangles
by zentara (Cardinal) on Aug 22, 2011 at 12:26 UTC
    Here is the basic idea, use canvas tags. It dosn't deal with your screen clutter of multiple rectangles as you drag, but the solution to that is in the previous example I showed, where you
    $mw->bind( 'Tk::Canvas','<Motion>' => \&making_rect );
    You should be able to implement that yourself. You need to work thru it once, to get it into your head how it works. So I throw you 1 fish, but not 2. :-)

    So to correct your code above to using tags, here are the modified subs

    $mw->bind('<ButtonPress>' => sub { $x_begin = $Tk::event->x; $y_begin = $Tk::event->y; print "x_begin = $x_begin y_begin=$y_begin\n"; $mw->bind('<Motion>' => sub { $x_now = $Tk::event->x; $y_now = $Tk::event->y; print "x_now = $x_now y_now=$y_now\n"; $rec = $chart->createRectangle( $x_begin, $y_begin, $x_now, $y_now, -width => 2, -outline => 'yellow', ################### -tags => ['rect'] ); ################### $rec2 = $chart2->createRectangle( $x_begin, $y_begin, $x_now, $y_now, -width => 2, -outline => 'orange', ################# -tags => ['rect'] ); ################## }); } ); $mw->bind('<ButtonRelease>' => sub { print "ButtonReleased\n"; #$chart->delete($rec); $mw->bind('<Motion>', ""); $chart_width = $chart->width; $chart->delete($rec); $chart2->delete($rec2); ###################################### $chart->delete('rect'); $chart2->delete('rect'); ###################################### $d = $x_begin/$chart_width; $e = $x_now/$chart_width; print "draw next chart at $d percent of timeline, end at $e percent of timeline\n"; $chart->clearchart; $chart2->clearchart; &update_data($d, $e); $chart->plot(\@data); $chart2->plot(\@data2); } );

    I'm not really a human, but I play one on earth.
    Old Perl Programmer Haiku ................... flash japh
      thank you!