Yeah, that was just lazyness, sorry. You can substitute the $le by $_[0]->parent.
You can see what is inside $_[0] by checking @_:
#!/perl
use strict;
use warnings FATAL => qw(all);
use Tk;
use Tk::LabEntry;
use Data::Dumper qw/Dumper/;
use List::Util qw(first);
use Scalar::Util qw(looks_like_number);
my $mw = MainWindow->new();
$mw->title("Test");
my $test = 8;
my $width = 250; my $length = 125;
$mw->minsize($width, $length);
my $FONT = $mw->fontCreate(-family => 'verdana',
-size => 14, -weight => 'normal');
my $le = $mw->LabEntry(-label => 'Value',
-labelPack => [qw/-side left -anchor w/],
-labelFont => '9x15bold',
-font => $FONT,
-relief => 'ridge',
-textvariable => \$test,
-width => 2,
)->pack();
$le->bind('<Key>' => sub { labelCheck($_[0]);});
MainLoop;
sub labelCheck
{
print Dumper \@_;
my $x = $_[0]->get();
if ( !(looks_like_number($x)) or ($x < 0) )
{
$_[0]->delete(0, 'end');
my $label = $_[0]->parent->Subwidget('label');
$label->configure( -background => 'red');
# $_[0]->configure( -labelBackground => 'red');
}
else
{
$_[0]->configure( -background => '#f0f0f0',);
# $_[0]->configure( -labelBackground => '#f0f0f0');
do_something();
}
return 1;
}
sub do_something { print $test, $/; }
For me, this returned:
$VAR1 = [
bless( {
'_TkValue_' => '.labentry.entry',
'_XEvent_' => bless( do{\(my $o = ' $ ÿÿÿÿü˜ï
+¬
œ¿ê Tç® t û A a A (ø \
+'ààï ù a ¼èˆ ä"¶ÔŒ')}, 'XEvent' )
}, 'Tk::Entry' )
];
It's a Tk::Entry inside a LabEntry (cf. .labentry.entry).
-
Are you posting in the right place? Check out Where do I post X? to know for sure.
-
Posts may use any of the Perl Monks Approved HTML tags. Currently these include the following:
<code> <a> <b> <big>
<blockquote> <br /> <dd>
<dl> <dt> <em> <font>
<h1> <h2> <h3> <h4>
<h5> <h6> <hr /> <i>
<li> <nbsp> <ol> <p>
<small> <strike> <strong>
<sub> <sup> <table>
<td> <th> <tr> <tt>
<u> <ul>
-
Snippets of code should be wrapped in
<code> tags not
<pre> tags. In fact, <pre>
tags should generally be avoided. If they must
be used, extreme care should be
taken to ensure that their contents do not
have long lines (<70 chars), in order to prevent
horizontal scrolling (and possible janitor
intervention).
-
Want more info? How to link
or How to display code and escape characters
are good places to start.