a user may play around with the text in Entry box, but he may not choose to conform to changes and might close the window. So, I want a submit button alongwith it. Only when it is pressed, I'll take the input.
You can also intercept the 'window close' event and change a textvariable to anything you want:
use strict;
use warnings;
use 5.012;
use Tk;
my $entry_text = 'Enter answer here'; #textvariable
#======Main window==========
my $mw = MainWindow->new;
$mw->protocol("WM_DELETE_WINDOW", \&my_quit);
sub my_quit {
say "Window closing...$entry_text";
$entry_text = '';
say "-->$entry_text<---";
exit;
}
#======Entry================
my $entry = $mw->Entry(
-textvariable => \$entry_text,
)->pack;
$entry->focus;
$entry->selectionRange(0, 'end');
sub my_validator {
if ($entry_text eq 'hello') {
$entry_text = 'Try again!';
$entry->selectionRange(0, 'end');
$entry->icursor(0);
}
else {
say "Thanks for the great input!";
say $entry_text;
}
}
#========Button=================
$mw->Button(
-text => 'Submit',
-command => \&my_validator,
)->pack;
MainLoop;