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

GTK+ avec Python Discussion :

arreter et commencer une boucle


Sujet :

GTK+ avec Python

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre extrêmement actif
    Avatar de lilington
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Juin 2005
    Messages
    681
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : Chine

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Juin 2005
    Messages : 681
    Par défaut arreter et commencer une boucle
    Bonjour j'ai un petit probleme (ptre meme gros ),
    j'ai deux boutton, 1 qui lance une boucle et l'autre qui devrait l'arreter.
    mais en faite j'ai vraiment occune idee de comment faire pour arreter la boucle une fois celle si lance. voici le code:
    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
     
     
    class Win:
        drp = False
     
        def start(s,w,d):
            self.drp=True:
            while self.drp==True:
                print "rien"
                time.sleep(1)
        def stop(s,w,d):
            self.drp = False
     
        def __init__(self):
            ...
            ...
            ...# definition de la fenetre et des 2 bouttons au dessus
            self.start_btn.connect("clicked",self.start,None)
            self.stop_btn.connect("clicked",self.stop,None)
            ...
            ...
            gtk.main()
            ...# le reste de la classe
     
    if __name__=="__int__:
        w=Win()
    ce qui ce passe c'est que sans surprise une fois que je clique sur le boutton start
    j'ai dans mon terminal les messages qui s'affiche toutes les secondes mais du coup impossible de clicker sur autre chose.
    je me demande comment arreter la boucle? merci de votre patience

    pour ce qui ce demande a quoi bon ecrire un truc pareille, c'est simple j'ai fait un utilitaire qui marche en console pour verifier des trucs a intervalles regulier, et je voulais faire un GUI pour le meme utilitaire. la j'ai ecris un truc plus court pour montrer le probleme.

  2. #2
    Membre éclairé
    Homme Profil pro
    Étudiant
    Inscrit en
    Novembre 2008
    Messages
    327
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 34
    Localisation : France, Seine et Marne (Île de France)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Novembre 2008
    Messages : 327
    Par défaut
    Bonjour,

    Lorsque l'on utilise des interfaces, nous devons "réserver" une classe pour cette dernière, dans votre cas, une fois la boucle lancé, l'interface vous ne pouvez plus cliquez sur le bouton car l'interface traite déjà votre boucle, il faut savoir qu'avec les GUI, ces dernières ne peuvent s'actualiser ou prendre ne compte les évènement uniquement si elles ont terminés toutes les taches. Il faut donc passer par une autre classe en "thread".

    Autre solution mais je ne suis pas très sur... Les interfaces ont besoins d'avoir terminé toutes les fonctions pour s'actualiser (et donc cliquer sur les boutons), mais nous pouvons demander à forcer le rafraichissement de l'interface meme dans une boucle, pour cela, je vous invite à regarder le FAQ de Guigui_ à 'adresse suivante : http://python.developpez.com/faq/?page=pyGTK

    J'espere vous avoir eclairé sur le fonctionnement des interfaces...

    Mickael

  3. #3
    Membre extrêmement actif
    Avatar de lilington
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Juin 2005
    Messages
    681
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : Chine

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Juin 2005
    Messages : 681
    Par défaut
    OUi, donc si j'ai bien compris je dois faire du multi-tread? c'est ce que je voulais eviter a la base. Merci je vais examiner tes dires et je ferai un feedback.

  4. #4
    Membre chevronné
    Inscrit en
    Janvier 2007
    Messages
    329
    Détails du profil
    Informations forums :
    Inscription : Janvier 2007
    Messages : 329
    Par défaut
    Salut,

    Regarde éventuellement ce sujet, il y a un exemple qui semble correspondre à ce que tu cherches.


    -

  5. #5
    Membre Expert
    Homme Profil pro
    Inscrit en
    Janvier 2005
    Messages
    1 259
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Janvier 2005
    Messages : 1 259
    Par défaut
    l'équivalent python de g_timeout_add devrait te permettre de faire ce que tu veux (appeler une fonction à intervalle régulier tout en permettant à gtk+ de continuer à gérer son interface graphqiue).

  6. #6
    Membre extrêmement actif
    Avatar de lilington
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Juin 2005
    Messages
    681
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : Chine

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Juin 2005
    Messages : 681
    Par défaut
    Vous etes gentil merci

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. arret definitf d'une boucle.
    Par oliv27400 dans le forum Interfaces Graphiques
    Réponses: 2
    Dernier message: 05/07/2010, 15h43
  2. arreter une boucle
    Par sebdug dans le forum Général JavaScript
    Réponses: 5
    Dernier message: 04/02/2008, 14h35
  3. Instruction pour arreter une boucle infinie
    Par pitizone dans le forum MATLAB
    Réponses: 2
    Dernier message: 22/03/2007, 14h42
  4. Réponses: 4
    Dernier message: 22/11/2006, 17h14
  5. Réponses: 10
    Dernier message: 24/12/2005, 15h35

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