in reply to Re^4: tk::matchentry changing the displayed choices
in thread tk::matchentry changing the displayed choices

It passed through my mind that that was what you were after. The following is probably what you want:

use strict; use warnings; use Tk; use Tk::MatchEntry; my %data = ( a => [qw/Abberley Abberton Abbotsley Accrington/], b => [qw/Babraham Bacton Bexhill Bradfield/] ); my $place; my $mw = MainWindow->new (-title => "i wish this would work",); $mw->geometry ("200x70+0+0"); my $label = $mw->label ("type somthing in the box"); my $me = $mw->MatchEntry ( -textvariable => \$place, -choices => [keys %data], -autosort => 0, -fixedwidth => 0, -ignorecase => 1, -maxheight => 10, -listwidth => 240, -onecmd => \&repopulate, )->pack (-side => 'left'); Tk::MainLoop (); sub repopulate { return unless exists $data{lc $place}; $me->configure (-choices => $data{lc $place}); }

Perl is environmentally friendly - it saves trees

Replies are listed 'Best First'.
Re^6: tk::matchentry changing the displayed choices
by gkx947n (Novice) on Jan 21, 2008 at 23:33 UTC
    well played that man! Thank you i wouldnt have been able to guess that in years. the only bit i dont understand is whats the lc in $data(lc $place)?

      lc returns the lower case version of the string in $place. Your list is not case sensitive so the keys in the hash need to be not case sensitive. Forcing them to lc (or uc) achieves that.


      Perl is environmentally friendly - it saves trees
        Thank you very much problem solved i believe