开发者

How can I display text from an external command in Perl Tk?

开发者 https://www.devze.com 2023-01-22 04:55 出处:网络
I have to display some print statements (which I get while running a Perl script) in the Tk GUI. I tried to show an example in pictorial format, for example:

I have to display some print statements (which I get while running a Perl script) in the Tk GUI. I tried to show an example in pictorial format, for example:

Initializ开发者_C百科ing the parser ...

Running the parser ...

Enabling the codec ...

Connected to the socket ...

Sending ipv4 traffic into the code ...

It goes on like this. I don't know how to do it.


You could run your perl script through Tk::ExecuteCommand

use Tk;
use Tk::ExecuteCommand;

$ec = tkinit()->ExecuteCommand(
     -command    => '',
     -entryWidth => 50,
     -height     => 10,
     -label      => '',
     -text       => 'Execute',
 )->pack;
 $ec->configure(-command => 'perl ./my_other_perl_script.pl');
 $ec->execute_command;
 $ec->update;

In general, you need to do some sort of IPC to run a batch and update a Tk GUI. Because IO handles can create events in Tk. Tk::ExecuteCommand kind of hides the complexity of the IPC.

Otherwise, you can design the IPC scheme of your own. Probably (roughly put) pipe, fork, and setup pipe events as a IO event, and the crucial commands to make a read-only log are:

$text->configure( -state => 'normal' );
$text->insert( end => $text_I_just_read_from_the_pipe );
$text->configure( -state => 'disabled' );
0

精彩评论

暂无评论...
验证码 换一张
取 消

关注公众号