perltk: выделение текста в текстовом поле и обновление меток - PullRequest
1 голос
/ 02 марта 2012

Использование TK в Windows XP.

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 не обновляется, когда я выделяю какой-либо текст. Может кто-нибудь, пожалуйста, помогите?

Ответы [ 2 ]

2 голосов
/ 02 марта 2012

РЕДАКТИРОВАТЬ : код без кнопки.

И не забудьте вызвать 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);
}
1 голос
/ 03 марта 2012

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

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