Perl Tk-код для перемещения мыши из одного места в другое без вмешательства пользователя - PullRequest
1 голос
/ 06 марта 2020

Я, очевидно, простой новичок и мог бы немного помочь. Я пытаюсь написать немного кода linux perl TK для создания блока и: 1) переместить указатель мыши в точку A ............ 2) спать в течение 2 секунд .. ........ 3) переместите указатель мыши в точку B ...........

БЕЗ вмешательства пользователя. ... Я хочу, чтобы указатель мыши двигался сам по себе, не нажимая кнопку или что-либо еще. Я слышал, что это называется деформацией, но я не знаю, как написать этот код.

У меня есть немного кода, который перемещает указатель pmouse .... но он включает кнопку ... ...... я не хочу кнопку часть. но я не знаю, как написать код в противном случае. Кроме того, я взял часть этого кода откуда-то еще, и я не знаю, как это исправить, как я описал в шагах выше.

Любая помощь будет оценена.


#!/usr/bin/perl
use Tk;

$count=0;
$m=Tk::MainWindow->new();

# create a button with a callback to do_warp
$button=$m->Button(-text => "Press Me", -command => \&do_warp);

# some filler labels so that the pointer warp is obvious
$filler1=$m->Label(-text => "           ");
$filler2=$m->Label(-text => "           ");

# this label is where the mouse pointer ends up
$l=$m->Label(-text => "Mouse ends up here");

$button->pack();
$filler1->pack();
$filler2->pack();
$l->pack();

#$m->repeat(2 => \&do_warp);

MainLoop;

sub do_warp
  {
  $count++;
  printf("COUNT=|%d|\n", $count);

  if ($count == 1)
    {
    sleep 2;
    $l->eventGenerate('<ButtonPress>',-warp => 1, -x => 10, -y => -10);
    }
  else
    {
    $count = 0;
    sleep 2;
    $l->eventGenerate('<ButtonPress>',-warp => 1, -x => 30, -y => -30);
    }
  }

1 Ответ

0 голосов
/ 06 марта 2020

Кнопка, которую вы нажимаете в этом коде ($button) - это просто способ запустить функцию do_warp. Напишите свою собственную версию do_warp так, чтобы она перемещала курсор туда, куда вы хотите, но затем вызовите do_warp из основного раздела Tk без какой-либо кнопки. Похоже, вы уже пытались сделать это в этом repeat l oop?

Мой Tk злой ржавый, поэтому я не могу помочь с точным синтаксисом, но вы должны быть в состоянии сделать это в основном раздел без необходимости нажатия кнопки для вызова do_warp.

...