2012-03-02 95 views
1

在Windows XP上使用TK。perltk:突出顯示文本字段中的文本並更新標籤

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不會在我突出顯示任何文本時更新。 任何人都可以請幫忙嗎?

+0

使用的平臺是什麼庫? – tripleee 2012-03-02 07:19:27

+0

使用tk; 我正在努力贏得XP。 語言是perl – amit 2012-03-02 07:25:30

+0

'$ ow'是什麼,是一個錯字?那麼你可能並沒有使用'strict'和'warnings',所以從此開始。 – tripleee 2012-03-02 07:27:36

回答

2

編輯:代碼沒有按鈕。

並且不要忘記在程序結束時調用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); 
} 
+0

感謝您的幫助, 但實際上我不想要一個按鈕......我只是希望當我從文本字段中選擇一些文本時,標籤應該會自動更新。 – amit 2012-03-02 10:35:18

+0

好吧,我現在得到它......謝謝:) – amit 2012-03-05 04:58:28

1

使用此:

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