meirgold has asked for the wisdom of the Perl Monks concerning the following question:

Hi

I am writing a program using Tk.
The program includes an Optionmenu which gets different parameters in it's "-options" parameter depending on the option which is chosen from another Optionmenu.
Thanks to the help of some great monks from the good 'ol monastery, I was able to change the options on one of the Optionmenus depending on what is chosen on the other, however, i still have a problem:
The option which is displayed on the menu doesn't change, until i press the menu and choose a different option.
To make it simple, what i would like to know is, if there is a way to change the displayed value of an option menu
by using the "-command" parameter from a different widget.

Thanks,

Replies are listed 'Best First'.
Re: Changing the value of an Optionmenu
by PodMaster (Abbot) on May 01, 2003 at 07:09 UTC
    Tk, like a lot of modules, is lacking documentation in certain spots. This however, is not really a problem if you're adept.

    Looking at the Tk::Optionmenu documentaion, I see that it's pretty minimal, so what do i do next? I read Tk/Optionmenu.pm. It's just perl. I immediately saw "sub setOption", and adapted the example from the pod like so

    use Tk; my $mw = MainWindow->new(); my $var; my @list = qw(jan feb mar apr); my $opt = $mw->Optionmenu( -options => [@list], -command => sub { print "got: ", shift, "\n" }, -variable => \$var, )->pack; $opt->addOptions([may=>5],[jun=>6],[jul=>7],[aug=>8]); $mw->Label(-textvariable=>\$var, -relief=>'groove')->pack; $mw->Button(-text=>'Exit', -command=>sub{$mw->destroy})->pack; $mw->Button( -text => 'Select Random', -command => sub { $opt->setOption( $list[int rand @list] ); } )->pack; MainLoop;
    Just click the "Select Random" button an a random item from the list will be selected. It's a quirky little method. If you pass in a string that's not on the list, it will be displayed, but if you click the menu, the item won't be in it. Quirky.

    Also, if reading the source doesn't help you, don't forget to search http://perltk.org (case sensitive but hey, lots and lots and lots of info there).


    MJD says you can't just make shit up and expect the computer to know what you mean, retardo!
    I run a Win32 PPM repository for perl 5.6x+5.8x. I take requests.
    ** The Third rule of perl club is a statement of fact: pod is sexy.

      Thanks a lot !!! it works !!