Probleme d'affichage perl/tk

Probleme d'affichage perl/tk - Perl - Programmation

Marsh Posté le 11-06-2008 à 09:04:37    

Bonjour,
 
J'ai un ti problème pour afficher un label. J'aimerais afficher un Label disant "Traitement en cours veuillez patienter" puis en meme temps faire un ping puis afficher le résultat. Le problème c'est qu'au lieu d'afficher mon label puis de faire le traitement, il me fait le traitement du ping et une fois fini il m'affiche mon label ainsi que mon résultat. J'ai déja essayé pas mal de choses mais rien n'y fait :(.
 

Code :
  1. sub fonc_stat {
  2. $txtattente = $mw->Label(-text=> "Traitement en cours veuillez patienter...", -font=>15)->place(-x=>250, -y=>175);
  3. my @argent=@_;
  4. $connecte=0;
  5. $nonconnecte=0;
  6. open(FILE,"C:/Perl/bin/$argent[0]" ) || die ("Erreur d'ouverture du fichier" );
  7. while (<FILE> ) {
  8. $host = $_;
  9. $toto = system("ping -n 1 ".$host);
  10. if ($toto==0) {
  11.  $connecte++;
  12. }
  13. else {
  14.  $nonconnecte++;
  15. }
  16. }
  17. print "Il y a $connecte pc d allumes et $nonconnecte pc d eteints";
  18. close(FILE);
  19. }


 
Merci d'avance.

Reply

Marsh Posté le 11-06-2008 à 09:04:37   

Reply

Marsh Posté le 16-06-2008 à 08:55:52    

Personne? :(

Reply

Marsh Posté le 17-06-2008 à 19:32:14    

C'est normal:
Comme tu peux le voir sur cet exemple, tu crées les objets tk, mais il ne sont affichés que lors de l'execution de la main loop.

Code :
  1. #!/usr/local/bin/perl
  2. use Tk;
  3. # Main Window
  4. my $mw = new MainWindow;
  5. my $label = $mw -> Label(-text=>"Hello HFR! [GUI Mode]" ) -> pack();
  6. my $button = $mw -> Button(-text => "Quit",
  7.                            -command => sub { exit }) -> pack();
  8. printf("Hello HFR! [Text Mode]\n" );
  9. sleep(4);
  10. MainLoop;


 
Par contre, si tu met le code que tu veux executer comme dans callback appellé par ton objet tk, tu auras execution apres l'affichage:

Code :
  1. #!/usr/local/bin/perl
  2. use Tk;
  3. # Main Window
  4. my $mw = new MainWindow;
  5. my $label = $mw -> Label(-text=>"Hello HFR! [GUI Mode]" ) -> pack();
  6. my $button = $mw -> Button(-text => "Quit",
  7.                            -command => sub { exit }) -> pack();
  8. $mw->after(4000, \&testProgram);
  9. MainLoop;
  10. sub testProgram {
  11.     printf("Hello HFR! [Text Mode]\n" );
  12. }


Ici, "Hello HFR! [Text Mode]" s'affiche 4s apres l'affichage de la fenetre.
Tu vois le principe.
 
A+,


Message édité par gilou le 17-06-2008 à 20:49:16

---------------
There's more than what can be linked! --    Iyashikei Anime Forever!    --  AngularJS c'est un framework d'engulé!  --
Reply

Marsh Posté le 18-06-2008 à 09:10:10    

Merci gilou ;)

Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed