in reply to Re: A very strange problem with entry, button widgets along with waitvariable(\$X)
in thread A very strange problem with entry, button widgets along with waitvariable(\$X)

Hi Ken, I am putting the header code here. This is just temp code i created to post here.

use Tk; use warnings; use strict; use Getopt::Long; use Cwd; use List::Util qw<first>; require Tk::ROText; my $temp_var = ""; my $mw = MainWindow->new(); $mw->geometry("1200x1200+0+680"); $mw->title("SVN Util"); $mw->resizable(0,1); $mw->Button(-text=>"Test", -command=>\&pop_user_entry)->pack; MainLoop; sub pop_user_entry{ $temp_var = ""; my $user_entry_done = 0 ; my $dialog_top = $mw->Toplevel(-title=>"User Entry"); $dialog_top->Entry(-textvariable=>\$temp_var)->pack; $dialog_top->Button(-text=>"OK",-command=>sub {$user_entry_don +e = 1 unless($temp_var =~ m/^$/);})->pack; $dialog_top->waitVisibility; $dialog_top->grab; $dialog_top->waitVariable(\$user_entry_done); $dialog_top->grabRelease ; $dialog_top->destroy; }

As i said if you flip the button and entry widget declaration in the method definition, the entry widget takes the keyboard input.

  • Comment on Re^2: A very strange problem with entry, button widgets along with waitvariable(\$X)
  • Download Code

Replies are listed 'Best First'.
Re^3: A very strange problem with entry, button widgets along with waitvariable(\$X)
by kcott (Archbishop) on Nov 18, 2013 at 12:05 UTC

    To be frank, I'm not overly happy with this. I asked:

    "Please supply a short working script."

    The code you've supplied does not even compile.

    I also asked:

    "Also provide verbatim copies of any warning or error messages you're seeing."

    So, where is:

    Global symbol "$user_entry_don" requires explicit package name at ... Execution of ... aborted due to compilation errors.

    Would I be right in assuming that you didn't even bother to test this code?

    In addition, I asked you to exclude any code that wasn't "relevant to the problem at hand". You've included four modules not used by the code you posted (Getopt::Long, Cwd, List::Util and Tk::ROText), a geometry() call (only suitable for particularly large screens) and other code: all irrelevant!

    I changed:

    $dialog_top->Button(-text=>"OK",-command=>sub {$user_entry_don +e = 1 unless($temp_var =~ m/^$/);})->pack;

    to:

    $dialog_top->Button(-text=>"OK",-command=>sub {$user_entry_don +e = 1 unless($temp_var =~ m/^$/);})->pack;

    The script now compiles and runs without any error or warning output. The "Test" button pops up the Toplevel; I'm able to enter text from the keyboard in the Entry widget; the "OK" button removes the Toplevel.

    I swapped the order of the Entry and Button widget code. Other than those widgets appearing in reverse order, the script runs the same as before.

    I am unable to reproduce your problem.

    I'm using Perl v5.18.1 and Tk v804.031 — perhaps try upgrading if you're using older versions.

    -- Ken

      Sorry for that Ken. I will try a version change.