in reply to Tk::ExecuteCommand - GUI not responding by executing longer running script

You have to show the code, and be aware that Perl5.61 is ancient, and that Windows presents some problems, so we can't say what is happening just based on your question.

In general, you can do a $mw->update often to keep the gui responsive, but I'm inclined to believe that you are running into an odd problem because you are running on Windows, or the command you are executing is very fickle. See How to skip to next Command line


I'm not really a human, but I play one on earth. Cogito ergo sum a bum
  • Comment on Re: Tk::ExecuteCommand - GUI not responding by executing longer running script

Replies are listed 'Best First'.
Re^2: Tk::ExecuteCommand - GUI not responding by executing longer running script
by dzon (Novice) on Feb 04, 2008 at 14:57 UTC
    I use perl 5.6.1 under Windows because it needs to run in this environment ... I also tried it in perl 5.8.8 but it didn't print the output at all

    The important part of code of the application:
    use Tk; require Tk::ExecuteCommand; $top = MainWindow->new; $executecommand = $top->ExecuteCommand( -height => 10, -scrollbars => +'se', bg => 'white')->pack( -expand => 'yes', -fill => 'both' ); $executecommand->terse_gui; $executecommand->bell; $executecommand->update; $b_savelog = $top->Button( -text => "Start script", -width => 12, -command => sub { $executecommand->configure( -command => "sleep.pl"); $executecommand->execute_command; } )->pack( -side => 'right' ); MainLoop;
    and the sleep.pl for testing:
    print "Starting..."; sleep 10; print "end\n";
    ...in the real application I start script which finds specified files in filesystem, parses them and then starts some other scripts ... which takes several minutes

    I was thinking about using threads, but I know about some problem with Tk and threads. I think a way could be to change somehow the Tk::ExecuteCommand (http://search.cpan.org/~lusol/tkjuke-1.0.6/Tk/ExecuteCommand.pm) - but I don't how yet...