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 :

Problème avec les boutons de perl Tk


Sujet :

Interfaces Graphiques Perl

  1. #1
    Nouveau Candidat au Club
    Inscrit en
    Septembre 2005
    Messages
    3
    Détails du profil
    Informations forums :
    Inscription : Septembre 2005
    Messages : 3
    Points : 1
    Points
    1
    Par défaut Problème avec les boutons de perl Tk
    Salut , suis novice dans la programmation avec Tk, j'ai besoin de faire une interface utilisateur avec trois boutons start stop cancel, lorsque j'appuie sur start une référence à une boucle for est lancée; mon problème est de pouvoir arrêter le déroulement de la boucle à tout moment. A l'état actuel dès que je clique sur le start j'ai pas le focus avant la fin de la boucle.Voici un exemple de ce que je veut:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    #!/usr/bin/perl -w
    use Tk;
    #Paramètres d'entrée
        $depart="";# depart_boucle
        $fin="";#fin_boucle
           #++++++++++++++++++++
           #Programme Principal
           #++++++++++++++++++++
    $fen=MainWindow->new(-title=>HP_SCAN);
    $texte=$fen->Label(-textvariable=>\$val)->pack;
    $texte->Label(-text=>"Problème-Aide")->pack;
    $val=1;
     
    #Creation d'une liste
    $lb=$fen->Listbox()->pack;
    $lb->insert(0,"       WWW");
    $lb->insert(1,"       DEVELOPPEZ");
    $lb->insert(2,"       COM");
     
    #Creation de 2 cadres
     
     #Cadre1
     $frame1=$fen->Frame()->pack(-fill=>'both');
      $case1=$frame1->Label(-text=>"Depart")->pack(-side=>"top",-fill=>'x');
      $case1->Entry(-textvariable=>\$depart,-width=>5)->pack(-side=>"right");
      $case2=$frame1->Label(-text=>"Fin")->pack(-side=>"bottom",-fill=>'x');
      $case2->Entry(-textvariable=>\$fin,-width=>5)->pack(-side=>"right");
     
     #Cadre2
     $frame2=$fen->Frame()->pack;
      $frame2->Button(-text=>"Start",-command=>\&HP)->pack(-fill=>'x',-side=>"left");
      $frame2->Button(-text=>"Stop",-command=>\&SP)->pack(-fill=>'x',-side=>"left");
      $frame2->Button(-text=>"Cancel",-command=>sub{exit})->pack(-fill=>'x',-side=>"left");
     
    MainLoop;
    sub SP{print "OK Merci\n";}
     
    sub HP{for($index=$depart;$index<=$fin;$index++)
             {print "C'est un test!\n";
              @tab=(2..4);
              sleep $tab[rand@tab];
              }
           }
    Edité par GLDavid. Merci de penser à mettre les balises code

  2. #2
    Expert éminent
    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
    Points : 8 586
    Points
    8 586
    Par défaut
    Il ne faut pas utiliser de sleep() dans une boucle for, mais plutôt le timer inclus dans Tk : Tk::after (en testant un booléen mis à 0 par "Stop").

    --
    Jedaï

  3. #3
    Nouveau Candidat au Club
    Inscrit en
    Septembre 2005
    Messages
    3
    Détails du profil
    Informations forums :
    Inscription : Septembre 2005
    Messages : 3
    Points : 1
    Points
    1
    Par défaut Problème avec les boutons de perl Tk
    j'essaie et je te tiens informer,

  4. #4
    Expert éminent
    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
    Points : 8 586
    Points
    8 586
    Par défaut
    N'essaie pas, fais le !
    Blague à part, j'ai déjà utilisé la méthode que je t'ai indiqué et ça marche sans problème, en fait c'est beaucoup plus clair et facile à utiliser que la boucle avec un sleep dedans.

    --
    Jedaï

  5. #5
    Nouveau Candidat au Club
    Inscrit en
    Septembre 2005
    Messages
    3
    Détails du profil
    Informations forums :
    Inscription : Septembre 2005
    Messages : 3
    Points : 1
    Points
    1
    Par défaut
    Citation Envoyé par Jedai
    Il ne faut pas utiliser de sleep() dans une boucle for, mais plutôt le timer inclus dans Tk : Tk::after (en testant un booléen mis à 0 par "Stop").

    --
    Jedaï

    j'ai essayé mais jai pas obtenu ce que je veux, en fait l''exemple de la source que jai donné est simple par rapport à ce que je veux :
    - le sleep doit demeurer pour retarder l'affichage de façon aléatoire dans un intervalle de temps défini
    - le bouton Stop doit être capable de mettre fin au processus demarré par start (A TOUT MOMENT)!!!!!!!!!!!!!!!!!
    Merci

Discussions similaires

  1. Un problème avec les boutons
    Par trust_100 dans le forum ASP.NET
    Réponses: 2
    Dernier message: 20/03/2008, 17h26
  2. Réponses: 7
    Dernier message: 10/10/2007, 14h15
  3. [Traitement d'image] problème avec les boutons animés
    Par robmoto dans le forum Webdesign & Ergonomie
    Réponses: 9
    Dernier message: 17/08/2007, 13h36
  4. Problème avec les Boutons Image
    Par abdoing dans le forum Struts 1
    Réponses: 4
    Dernier message: 29/06/2007, 10h35
  5. Problème avec les boutons d'options
    Par Le Rebel dans le forum Langage
    Réponses: 3
    Dernier message: 07/02/2006, 12h12

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