http://www.perlmonks.org?node_id=993622


in reply to Tkx Optionmenu

Is the syntax below correct?

:) the code compiles so its correct syntax, but as the runtime error says, there is no command optionmenu

What is this optionmenu widget you're trying to create? Where is it documented?

I'd appreciate any suggestions.

You can always stick Tk.pm , there is no reason to pickup Tkx

Replies are listed 'Best First'.
Re^2: Tkx Optionmenu
by shortyfw06 (Beadle) on Sep 14, 2012 at 13:43 UTC

    Thanks for the reply. optionmenu is a Tk widget.

    http://search.cpan.org/dist/Tk/pod/Optionmenu.pod

    I found that for Tkx, combobox is basically the same as optionmenu so I was able to use that.

    http://www.tkdocs.com/tutorial/widgets.html

    I am continuing to have difficulties with the conversion. You suggested sticking with Tk, however, I don't have Tk included in the installation of Active Perl that I am now using. Is there a download you can point me to? Would it be a simple download of Tk to use my current script or is there more to it? Thank you again!

      use PPM::Repositories to find a repository with Tk, like http://www.bribes.org/perl/ppm/Tk.ppd

      ... http://search.cpan.org/dist/Tk/pod/Optionmenu.pod

      You're looking at the wrong documentation, Tkx/Tkx::Tutorial says read the following

      http://docs.activestate.com/activeperl/5.14/lib/Tcl/tkkit.html -> http://docs.activestate.com/activetcl/8.5/tcl/tk_contents.htm -> http://docs.activestate.com/activetcl/8.5/tcl/TkCmd/optionMenu.htm

      #!usr/bin/perl -- use strict; use warnings; $Tkx::TRACE = 64; use Tkx; my $mw = Tkx::widget->new("."); { my @fail_crit = ( '1. Maximum Strain', '2. Maximum Stress', '3. Tsai-Hill', '4. Modified Tsai-Wu', '5. Hoffman', ); my $chosen = ""; my $frame = $mw->new_ttk__frame(); $frame->g_pack(qw/ -expand 1 -fill both /); $frame->new_ttk__label( -text => "CHOSEN:", )->g_grid( -column => 0, -row => 0, ); $frame->new_ttk__label( -textvariable => \$chosen, )->g_grid( -column => 1, -row => 0, ); #~ tk_optionMenu pathName varName value ?value value ...? Tkx::tk___optionMenu( "$frame.crit", \$chosen, @fail_crit ); #~ Tkx::widget->new( "$frame.crit" )->g_grid(-column => 2, -row => + 0); Tkx::grid( "$frame.crit", -column => 2, -row => 0 ); } Tkx::i->interp->Eval(q{ttk::label .l2 -textvariable myVar; pack .l2}); Tkx::i->interp->Eval(q{tk_optionMenu .foo myVar Foo Bar Boo Spong Wibb +le}); Tkx::i->interp->Eval(q{pack .foo}); Tkx::MainLoop(); __END__ Tkx-1-0.0s-tkx-optionmenu.pl-21: winfo children . Tkx-2-0.0s-tkx-optionmenu.pl-21: ttk::frame .f Tkx-3-0.0s-tkx-optionmenu.pl-22: pack .f -expand 1 -fill both Tkx-4-0.0s-tkx-optionmenu.pl-24: winfo children .f Tkx-5-0.0s-tkx-optionmenu.pl-24: ttk::label .f.l -text CHOSEN: Tkx-6-0.0s-tkx-optionmenu.pl-24: grid .f.l -column 0 -row 0 Tkx-7-0.0s-tkx-optionmenu.pl-30: winfo children .f Tkx-8-0.0s-tkx-optionmenu.pl-30: ttk::label .f.l2 -textvariable SCALAR +(0x99ae24) Tkx-9-0.0s-tkx-optionmenu.pl-30: grid .f.l2 -column 1 -row 0 Tkx-10-0.0s-tkx-optionmenu.pl-37: tk_optionMenu .f.crit SCALAR(0x99ae2 +4) {1. Maximum Strain} {2. Maximum Stress} {3. Tsai-Hill} {4. Modifie +d Tsai-Wu} {5. Hoffman} Tkx-11-0.0s-tkx-optionmenu.pl-44: grid .f.crit -column 2 -row 0