2012-03-02 2 views
1

Использование TK в Windows XP.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

+0

с использованием tk; Я работаю над победой xp. Язык perl – amit

+0

Что такое '$ ow', это опечатка? Тогда вы, вероятно, не используете 'strict' и' warnings', поэтому начните с этого. – tripleee

ответ

2

EDIT: код без кнопки.

И не забудьте позвонить 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

+0

ОК я получил его сейчас ... спасибо :) – amit

1

Используйте это:

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