#!/usr/bin/perl # https://perlmonks.org/?node_id=1226054 use strict; use warnings; use Tk; $SIG{__WARN__} = sub { die @_ }; my %mults = ( A => "a", B => "b", '' => '', ); my %Inputs; my %Telltale; sub inline_validate_section { $Inputs{Section} or return 1; $Telltale{Section} or return 1; my $entry = uc(shift); print "$entry\n"; if(defined($mults{$entry}) || !$entry){ $Inputs{Section}->configure(-background => 'lightgrey'); $Telltale{Section}->configure(-text => "$mults{$entry}"); #$Telltale{Section}->update(); } else { $Inputs{Section}->configure(-background => 'red'); $Telltale{Section}->configure(-text => "nope"); #$Telltale{Section}->update(); } return 1; } my $main = MainWindow->new(); $main->geometry('400x100'); # two frames and adjuster my $main_frame = $main->Frame; # right # pack frames $main_frame->pack(qw/-side right -fill both -expand l/); my $vn = "Section"; $main_frame->Label(-text => $vn, -width => 15)->pack(qw/-side left/); $Inputs{$vn} = $main_frame->Entry(-validate => 'key', -validatecommand => [\&inline_validate_section], -textvariable => \$vn)->pack(qw/-side left -padx 10 -pady 5 -fill x/); $Telltale{$vn} = $main_frame->Label(-text => "nope", -width => 25)->pack(qw/-side left/); MainLoop();