【问题标题】:perltk: highlighting text in textfield and updating labelsperltk:突出显示文本字段中的文本并更新标签
【发布时间】:2012-03-02 07:12:04
【问题描述】:

在 Windows XP 上使用 TK。

my $mw = new MainWindow;
my $text1 = $mw->Text(-width=>20, -height=>10)
            ->place(-x=>350, -y=>460); 

my $showlabel = $mw->Label(-text => "nothing selected")
            ->place(-x=>50, -y=>120);

$text1->configure( -command => sub { 
    $showlabel->configure(-text => "You selected:\t" . 
                          $text1->getSelected() 
                         )
  } 
);

运行代码后,每当我突出显示任何文本时,$showlabel 都不会更新。 有人可以帮忙吗?

【问题讨论】:

  • 在哪个平台上使用什么库?
  • 使用传统知识;我正在开发win xp。语言是 perl
  • $ow 是怎么回事,是错字吗?那么你可能没有使用strictwarnings,所以从那个开始。
  • 抱歉,$mw 被错误输入为 $ow。我使用了“警告”
  • 编辑了问题以修正错字。还添加了平台信息。对于它的价值,请注意您可以并且应该编辑您的问题,以便 cmets 可以专注于实际问题。

标签: perl tk perltk


【解决方案1】:

编辑:没有按钮的代码。

别忘了在程序结束时调用MainLoop 来显示窗口。没有它,什么都不会发生。

试试这个:

use strict;
use warnings;

use Tk;

my $mw = new MainWindow;
my $text1 = $mw->Text(-width => 20, -height => 10)
                   ->place(-x => 350, -y => 460);
my $showlabel = $mw->Label(-text => "nothing selectd")
                       ->place(-x => 50, -y => 120);
$text1->bind('<KeyPress>'     , \&sel);
$text1->bind('<ButtonPress>'  , \&sel);
$text1->bind('<ButtonRelease>', \&sel);

MainLoop;

sub sel
{
    $showlabel->configure(-text => "You selected:\t" . $text1->getSelected);
}

【讨论】:

  • 感谢您的帮助,但实际上我不需要按钮...我只是希望当我从文本字段中选择一些文本时标签应该自动更新。
【解决方案2】:

使用这个:

$text1->bind( '<<Selection>>', sub {
  $showlabel->configure(-text => "You selected:\t".$text1->getSelected() )
} );

【讨论】:

    猜你喜欢
    • 2011-06-26
    • 1970-01-01
    • 2012-03-02
    • 1970-01-01
    • 2013-11-11
    • 2011-02-05
    • 2013-05-28
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多