IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Interfaces Graphiques Perl Discussion :

Actualiser "rapidement" un widget Tk


Sujet :

Interfaces Graphiques Perl

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre Expert
    Avatar de Woufeil
    Profil pro
    Étudiant
    Inscrit en
    Février 2006
    Messages
    1 076
    Détails du profil
    Informations personnelles :
    Âge : 37
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Février 2006
    Messages : 1 076
    Par défaut Actualiser "rapidement" un widget Tk
    Bonjour à tous,

    Je me retrouve face à un problème que j'avoue n'avoir jamais rencontré. J'essaye (plus par jeu que par utilité) de faire un script d'administration réseau qui permet d'ouvrir un .txt contenant une liste d'IP qu'il devra pinguer jusqu'à ce que l'utilisateur arrête le script. Jusque là, pas de problèmes.
    Là ou je galère, c'est que je voudrais pouvoir faire tout ça de manière visuelle : si le ping est bon, j'affiche l'IP en vert, sinon en rouge. J'ai essayé de faire ça simplement avec une boucle infinie :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    while () {
      if ( $p->ping($ligne)) {
        $label -> configure(-activebackground => 'green' , -background => 'green') if ($resp == 0);
        $resp = 1;					
      }
      else {
        $label -> configure(-activebackground => 'red' , -background => 'red') if ($resp == 1);
        $resp = 0;
      }
    }
    Mais là, la fenêtre ne s'affiche même pas
    Une idée ?

    Merci !

  2. #2
    Expert confirmé
    Avatar de Jedai
    Homme Profil pro
    Enseignant
    Inscrit en
    Avril 2003
    Messages
    6 245
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Côte d'Or (Bourgogne)

    Informations professionnelles :
    Activité : Enseignant

    Informations forums :
    Inscription : Avril 2003
    Messages : 6 245
    Par défaut
    C'est parce que tu ne laisses jamais le temps à Tk de faire tourner sa boucle d'interaction (MainLoop()), donc il ne mets jamais rien à jour.
    Tu as deux options : soit utiliser DoOneEvent() pour laisser un peu d'air à Tk, soit retravailler ton script pour ne pas utiliser une boucle infinie.
    En utilisant repeat() par exemple pour faire ces pings toutes les 3s par exemple, ça me paraitrait plus raisonnable.

    Note que pendant que le ping() est effectué, l'interface est gelée, ce qui peut être désagréable, si ça t'embête, tu peux utiliser la petite astuce que j'avais proposé dans ce post.

    --
    Jedaï

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo