0
use Thread;
use warnings;
use Tk;

my $x = 10;
my $mw = new MainWindow;
$mw->Label(-text => 'honeywell')->place(-x => $x, -y => 50);
my $thr = new Thread \&sub1;

sub sub1 { 
  for ($i = 0 ; $i < 20 ; $i++) {
      $x += 20;
      sleep(2);            
      $mw->update;
    }
}

MainLoop;                        

我正在尝试更新标签,以使文本出现下降。我想使用线程来实现它。但是文本 os 没有向下滑动。任何人都可以帮助我吗?

4

2 回答 2

3

试试这个代码:

use strict;
use warnings;

use Tk;

my $x = 10;

my $mw = new MainWindow;
my $label = $mw->Label(-text => 'honeywell')->place(-x => $x, -y => 50);

$mw->repeat(2000, \&sub1);

sub sub1 {
    return if $x >= 400;
    $x += 20;
    $label->place(-x => $x, -y => 50);
    $mw->update;
}

MainLoop;
于 2012-03-13T11:06:00.080 回答
0

我认为这永远不会起作用(使用Threador threads)。
place使用的内容$x并且不绑定变量$x。因此,在初始放置后更改变量不会对标签做任何事情。

于 2012-03-13T10:51:26.677 回答