如何在Perl Tk中显示外部命令的文本?

时间:2010-10-26 10:16:42

标签: perl tk

我必须在Tk GUI中显示一些打印语句(我在运行Perl脚本时获得)。我试图以图片形式展示一个例子,例如:

Initializing the parser ...

Running the parser ...

Enabling the codec ...

Connected to the socket ...

Sending ipv4 traffic into the code ...

它继续这样下去。我不知道怎么做。

1 个答案:

答案 0 :(得分:4)

您可以通过Tk::ExecuteCommand

运行perl脚本
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;

通常,您需要执行某种IPC来运行批处理并更新Tk GUI。因为IO句柄可以在Tk中创建事件。 Tk::ExecuteCommand隐藏了IPC的复杂性。

否则,您可以设计自己的IPC方案。可能(粗略地)将管道,分支和设置管道事件作为IO事件,以及制作只读日志的关键命令是:

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