john.tm has asked for the wisdom of the Perl Monks concerning the following question:

Hi, I have a script which via the command line asks the user for the the required Year,Month and Day and then processes a file with those details.
#!/usr/bin/perl #use strict; use warnings; use Spreadsheet::WriteExcel; use File::Copy qw(copy); open(STDERR, ">&STDOUT"); #Set-up Files my $yyyy = $var[0]; print "Enter year in YYYY format:\n"; $yyyy = <STDIN>; chomp $yyyy; my $mmm = $var[1]; print "Enter Month in 3 letter abr format\njan,feb,mar,apr,may +,jun,jul,aug,sep,oct,nov,dec:\n"; $mmm = <STDIN>; chomp $mmm; my $dd = $var[2]; print "Enter day in number format\n01,02,03,04 etc:\n"; $dd = <STDIN>; chomp $dd; <\code> <p> How can i create and bind a Tk pop up entry widget for this, I have c +reated the browseEntry widget but need help on binding it to the vari +ables. <code> #!/usr/bin/perl use strict; use warnings; use Tk; use Tk::BrowseEntry; my $mw = MainWindow -> new; $mw->geometry("380x155"); $mw->title("Adhoc Failures"); my $browseEntryyear = $mw ->BrowseEntry( -label => 'Select year :', -relief => 'sunken', #-variable => \$var0, -state => 'readonly', -autolistwidth => '1', -justify => 'right', -buttontakefocus => 1, -relief => 'sunken') -> pack( -ipadx => 33, -side => 'top', -fill => 'x', -anchor => 'e', -expand => 1); $browseEntryyear -> insert('end', qw(2013 2014 2015 2016 2017 +2018 2019 2020)); my $browseEntrymonth = $mw ->BrowseEntry( -label => 'Select Month :', #-variable => \$var1, -state => 'readonly', -autolistwidth => '1', -justify => 'right', -buttontakefocus => 1, -relief => 'sunken') -> pack( -ipadx => 33, -side => 'top', -fill => 'x', -anchor => 'e', -expand => 1); $browseEntrymonth -> insert('end', qw(Jan Feb Mar Apr May Jun +Jul Aug Sep Oct Nov Dec)); my $browseEntryday = $mw ->BrowseEntry( -label => 'Select Day :', #-variable => \$var2, -state => 'readonly', -autolistwidth => '1', -justify => 'right', -buttontakefocus => 1, -relief => 'sunken') -> pack( -ipadx => 33, -side => 'top', -fill => 'x', -anchor => 'e', -expand => 1); $browseEntryday -> insert('end', qw(01 02 03 04 05 06 07 08 09 + 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31) +); my $but = $mw -> Button(-text => " Enter ", -command =>\&push_button, -relief => 'raised')->pack(-side + => "bottom",-fill => 'x'); MainLoop; #sub push_button { yourFunc($var0,$var1,$var2) };

Replies are listed 'Best First'.
Re: Perl tk entry widget to get arguments for perl script.
by roboticus (Chancellor) on Jul 13, 2014 at 14:37 UTC

    john.tm:

    Too ugly, didn't read. Code tags are like: <code> Code goes here </code>. Fix your tags, and I'm sure someone will be able to read the code and give you a hand.

    ...roboticus

    When your only tool is a hammer, all problems look like your thumb.

      > Too ugly, didn't read.

      I think this is the beginning of a beautiful ... expression! ;)

      Cheers Rolf

      (addicted to the Perl Programming Language)

Re: Perl tk entry widget to get arguments for perl script.
by zentara (Cardinal) on Jul 13, 2014 at 22:08 UTC
    What are you tring to do? Do you want to let the user select some dates, then continue on with them as input to your script? Thats easy, just store your values in a global hash, and after you are done selecting with the Tk widgets, you say $mw->destroy; and your script will continue on with the values selected with Tk stored in a variable.

    When the $mw or MainLoop is destroyed, the script will continue right on after the MainLoop line, doing your bidding, reading your variables .

    #!/usr/bin/perl use warnings; use strict; use Tk; my $mw = new MainWindow(); my $password = ''; my $entry = $mw->Entry( -show=>'*', -relief=>'ridge', -textvariable=>\$password )->pack; $entry->bind('<Return>',[\&somesub]); $entry->focus; MainLoop; sub somesub { $password = $entry->get; print "password ->$password\n"; $mw->destroy; } print "$password: you can continue on here\n"; <>; #wait for keypress to exit; # do your otherstuff here exit;

    I'm not really a human, but I play one on earth.
    Old Perl Programmer Haiku ................... flash japh