Как я могу отобразить текст из внешней команды в Perl Tk? - PullRequest
0 голосов
/ 26 октября 2010

Мне нужно отобразить некоторые операторы печати (которые я получаю при запуске сценария Perl) в графическом интерфейсе Tk. Я попытался показать пример в графическом формате, например:

Initializing the parser ...

Running the parser ...

Enabling the codec ...

Connected to the socket ...

Sending ipv4 traffic into the code ...

Это продолжается так. Я не знаю, как это сделать.

1 Ответ

4 голосов
/ 26 октября 2010

Вы можете запустить свой Perl-скрипт через 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;

В общем, вам нужно выполнить какой-то IPC для запуска пакета и обновления графического интерфейса Tk.Потому что дескрипторы ввода-вывода могут создавать события в Tk.Tk::ExecuteCommand отчасти скрывает сложность МПК.

В противном случае вы можете разработать собственную схему IPC.Вероятно (грубо говоря) события канала, разветвления и настройки канала как событие ввода-вывода, и важнейшие команды для создания журнала только для чтения:

$text->configure( -state => 'normal' );
$text->insert( end => $text_I_just_read_from_the_pipe );
$text->configure( -state => 'disabled' );
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...