2010-10-26 13 views
0

Je dois afficher des instructions d'impression (que je reçois lors de l'exécution d'un script Perl) dans l'interface graphique de Tk. J'ai essayé de montrer un exemple en format pictural, par exemple:Comment puis-je afficher du texte à partir d'une commande externe dans Perl Tk?

Initializing the parser ... 

Running the parser ... 

Enabling the codec ... 

Connected to the socket ... 

Sending ipv4 traffic into the code ... 

Il continue comme ça. Je ne sais pas comment le faire.

Répondre

4

Vous pouvez exécuter le script perl dans 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; 

En général, vous devez faire une sorte de IPC pour exécuter un lot et mettre à jour une interface graphique Tk. Parce que les poignées d'E/S peuvent créer des événements dans Tk. En quelque sorte, cache la complexité de l'IPC.

Sinon, vous pouvez concevoir vous-même le schéma IPC. Probablement (mis à peu près) pipe, fourchette, et les événements de tuyaux d'installation comme un événement IO, et les commandes essentielles pour faire un journal de lecture seule sont:

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

grâce buddy..i modifié ce code et il satisfait mes besoins . –