Is there a method to have Tk::Optionmenu start displaying the option list without having the user first click the button?
Question 2: Why does the Optionmenu callback function (localCall below) get called before the user click of Optionmenu button? Please look at my workaround.
Thanks
!/usr/bin/perl -w use strict; use warnings; # teest Tk::Menuoption use Tk; use Tk::Optionmenu; my $mw = new MainWindow; my $baseFrame = $mw->Frame()->pack( -side=>'top', -fill=>'both', -expand=>0); my $name_text = "phone name"; my $phoneNo = 51206; $baseFrame->Button(-text=>$phoneNo, -relief=>'flat', -cursor=>'hand1', -activeforeground=>'blue', -activebackground=>'white', -command => sub {phoneCmds( $baseFrame, $phoneNo);}, )->pack(-side=>'left'); my $cmdsFrame; my $cm; sub phoneCmds { my ( $baseFrame, $caller, ) = @_; my $deviceDN = $caller; print "caller(deviceDN)=$deviceDN\n"; $cmdsFrame = $baseFrame->Frame( )->pack( -side=>'left', -fill=>'both', -expand=>0); my @callees = qw/46001 46002 46003 46004/; my $callee; $cm = $cmdsFrame->Optionmenu(- -variable =>\$callee, -options => [@callees], -command => [\&localCall, $caller], ); $cm->pack(); } sub localCall { my ( $caller, $callee, ) = @_; return if !defined($callee); return if !defined($cm); print "localCall: caller=$caller callee = $callee\n"; $cm->destroy() if $cm && $cm->exists(); $cm = undef; $cmdsFrame->destroy() if $cmdsFrame && $cmdsFrame->exists(); # $cmdsFrame = undef; } MainLoop;
In reply to Tk:::Optionmenu startup displaying the optionlist by Ray Smith
| For: | Use: | ||
| & | & | ||
| < | < | ||
| > | > | ||
| [ | [ | ||
| ] | ] |