in reply to Re^2: want way to drag tk window
in thread want way to drag tk window

Awesome, thanks to both of you!

I should mention, the code works on linux but not windows, I get a syntax error only on windows, strange:

Unrecognized escape \K passed through at c:\t\junk32.pl line 58. Bareword found where operator expected at c:\t\junk32.pl line 58, near + "s/\+\K([-\d]+)\+([-\d]+)$/ ($1 + $deltax) . '+' . ($2 + $deltay) /e +r" syntax error at c:\t\junk32.pl line 58, near "s/\+\K([-\d]+)\+([-\d]+) +$/ ($1 + $deltax) . '+' . ($2 + $deltay) /er"

Replies are listed 'Best First'.
Re^4: want way to drag tk window
by tybalt89 (Monsignor) on Aug 06, 2017 at 01:31 UTC

    Here's a version without both \K and the /r option to the s///.
    It should run on older perls.

    It also uses B1-Motion to avoid an extra flag.

    #!/usr/bin/perl # http://perlmonks.org/?node_id=1196818 use strict; use warnings; use Tk; sub xy { $_[0]->XEvent->x, $_[0]->XEvent->y } my $mw = MainWindow->new; $mw->overrideredirect(1); $mw->Label( -text => 'Press 1, Move, then Release in green Canvas to move window +', )->pack(-fill => 'x'); my $c = $mw->Canvas(-width => 500, -height => 400, -bg => 'green', )->pack; $c->Tk::bind('<1>' => \&leftdown); $c->Tk::bind('<B1-Motion>' => \&leftmotion); $mw->Button(-text => 'Exit', -command => sub { $mw->destroy }, )->pack(-fill => 'x'); MainLoop; my ($startx, $starty); sub leftmotion { my ($endx, $endy) = &xy; my $deltax = $endx - $startx; my $deltay = $endy - $starty; my ($size, $x, $y) = split /\+/, $mw->geometry; $mw->geometry( "$size+" . ($x + $deltax) . "+" . ($y + $deltay) ); } sub leftdown { ($startx, $starty) = &xy; }
Re^4: want way to drag tk window
by golux (Chaplain) on Aug 06, 2017 at 00:35 UTC
    Try, instead of:
    my $newposition = $oldposition =~ s/\+\K([-\d]+)\+([-\d]+)$/ ($1 + $deltax) . '+' . ($2 + $deltay) / +er;
    doing this:
    $oldposition =~ /^(\d+)x(\d+)\+?([-\d]+)\+?([-\d]+)/; my ($newx, $newy) = ($3 + $deltax, $4 + $deltay); my $newposition = "${1}x${2}+${newx}+${newy}"
    say  substr+lc crypt(qw $i3 SI$),4,5
Re^4: want way to drag tk window
by tybalt89 (Monsignor) on Aug 06, 2017 at 00:30 UTC

    Your Windows perl is older. \K is a moderately more recent feature.