Beefy Boxes and Bandwidth Generously Provided by pair Networks
There's more than one way to do things

Re^3: Tk vs Tkx for -validatecommand

by Anonymous Monk
on Sep 19, 2012 at 18:42 UTC ( #994497=note: print w/replies, xml ) Need Help??

in reply to Re^2: Tk vs Tkx for -validatecommand
in thread Tk vs Tkx for -validatecommand

:) You're still stuck in your

If you run your program you'll get a nice error

Can't call method "configure" without a package or object reference

g_pack doesn't return an object

Replies are listed 'Best First'.
Re^4: Tk vs Tkx for -validatecommand
by shortyfw06 (Beadle) on Sep 19, 2012 at 19:40 UTC

    Yes, I'm having such a hard time with this... I got the error but it points to line 10 which doesn't have a g_pack command? I don't understand what the problem is. Does this mean the g_pack for the entry didn't work?


      You're calling configure on $ent but $ent is not an object

      $ent is assigned the return value from g_pack

      g_pack doesn't return an object

      the return value of the g_pack method is not an object

      g_pack returned something which is not an object

      g_pack returned the empty string ""

      "" the empty string does not have a configure method

      "" the empty string is not an object

      you can't call methods on the empty string ""


        Thank you Anonymous Monk. I fixed the script but the validatecommand is still not doing what I expect. I want it to give an immediate error if an invalid character is input into the entry.

        #! perl use strict; use warnings; use Tkx; my $value; my $mw = Tkx::widget->new("."); my $frame = $mw -> new_frame(); $frame->g_pack(); my $ent = $frame ->new_entry(-textvariable => \$value); $ent->g_pack(); $ent->configure(-validatecommand => [sub { $_[0] =~ /^(?:|-|\d+|-\d+)$ +/ }, Tkx::Ev('%P'), $ent], -invalidcommand => \&lam_num_error); my $print_button = $mw->new_button(-text => "Print", -command => \&printx, -font => "ansi 10 bold")->g_pack(); my $reset_frm = $mw->new_frame(); $reset_frm->g_pack(-fill => 'both'); my $reset_button = $reset_frm->new_button(-text => "Reset", -command => \&do_reset, -font => "ansi 10 bold")->g_p +ack(); Tkx::MainLoop(); sub printx { print $value unless $value eq '-'; } sub do_reset { $ent->delete(0, 'end'); } sub lam_num_error { Tkx::tk___mmessageBox(-message => "The input must be an integer.") +; } __END__

Log In?

What's my password?
Create A New User
Node Status?
node history
Node Type: note [id://994497]
and all is quiet...

How do I use this? | Other CB clients
Other Users?
Others surveying the Monastery: (8)
As of 2018-06-19 11:59 GMT
Find Nodes?
    Voting Booth?
    Should cpanminus be part of the standard Perl release?

    Results (113 votes). Check out past polls.