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

wxPython Discussion :

Arrêter une wx.Gauge lors de l'arrêt d'un programme


Sujet :

wxPython

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Rédacteur/Modérateur

    Avatar de Jiyuu
    Homme Profil pro
    Développeur amateur
    Inscrit en
    Janvier 2007
    Messages
    2 456
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Loire (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur amateur
    Secteur : Industrie

    Informations forums :
    Inscription : Janvier 2007
    Messages : 2 456
    Billets dans le blog
    15
    Par défaut Arrêter une wx.Gauge lors de l'arrêt d'un programme
    Bonjour à tous,

    Dans mon programme j'ai une fonction qui d'une part lance une wx.Gauge qui tourne en boucle et qui d'autre part lance un .bat.
    Ce que je souhaite faire c'est arrêter la wx.Gauge lorsque le .bat arrive à son terme.

    J'ai essayé avec des méthode de lancement du .bat qui ne rendent la main que lorsque celui-ci est fini mais du coup ça me bloque la wx.Gauge.

    Autres questions, est-il possible de ne pas faire apparaitre le fenêtre de commande DOS lorsque le .bat est lancé?

    Merci de votre aide
    Initiation à Qt Quick et QML : Partie 1 - Partie 2
    En cas de besoin, pensez à la
    Mon site et mes tutoriaux sur Developpez.com
    Pas de question technique par MP... Les forums sont là pour ça

  2. #2
    Membre expérimenté
    Profil pro
    Inscrit en
    Décembre 2007
    Messages
    222
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2007
    Messages : 222
    Par défaut
    Bonjour,
    As tu essayés d'utiliser un thread pour modifier la Gauge?

  3. #3
    Rédacteur/Modérateur

    Avatar de Jiyuu
    Homme Profil pro
    Développeur amateur
    Inscrit en
    Janvier 2007
    Messages
    2 456
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Loire (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur amateur
    Secteur : Industrie

    Informations forums :
    Inscription : Janvier 2007
    Messages : 2 456
    Billets dans le blog
    15
    Par défaut
    Citation Envoyé par nyko77 Voir le message
    Bonjour,
    As tu essayés d'utiliser un thread pour modifier la Gauge?
    Non. Je ne maitrise pas très bien cet "outil" (en fait jamais réellement utilisé), mais si c'est la solution alors je vais y jeter un oeil.

    Je regarderai la faq et si j'ai un souci je reviendrai ici.

    Merci et @+
    Initiation à Qt Quick et QML : Partie 1 - Partie 2
    En cas de besoin, pensez à la
    Mon site et mes tutoriaux sur Developpez.com
    Pas de question technique par MP... Les forums sont là pour ça

  4. #4
    Membre Expert Avatar de pacificator
    Profil pro
    Inscrit en
    Août 2006
    Messages
    1 074
    Détails du profil
    Informations personnelles :
    Âge : 45
    Localisation : France

    Informations forums :
    Inscription : Août 2006
    Messages : 1 074
    Par défaut
    Tu peux t'inspirer du code source du compresseur de photos qui utilise un thread pour parcourir des répertoires et notifie les modifications grâce aux évenements.

  5. #5
    Membre averti
    Profil pro
    Inscrit en
    Mars 2008
    Messages
    36
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2008
    Messages : 36
    Par défaut
    salut Jiyuu,
    Citation Envoyé par Jiyuu Voir le message
    Autres questions, est-il possible de ne pas faire apparaitre le fenêtre de commande DOS lorsque le .bat est lancé?
    regarde subprocess.Call

    JM

  6. #6
    Rédacteur/Modérateur

    Avatar de Jiyuu
    Homme Profil pro
    Développeur amateur
    Inscrit en
    Janvier 2007
    Messages
    2 456
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Loire (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur amateur
    Secteur : Industrie

    Informations forums :
    Inscription : Janvier 2007
    Messages : 2 456
    Billets dans le blog
    15
    Par défaut
    J'ai commencé à regarder des exemples pour les thread mais après une grosse journée de taf j'ai un peu de mal à comprendre l'idée...
    J'ai regardé sur la faq et pour le premier exemple, c'est je pense faisable sans thread!!!!

    Auriez vous un bon tuto ou des exemples simpliste me permettant d'avancer dans mon projet (pour le compresseur, j'ai l'impression que c'est un peu complexe et en plus j'aimerai bien comprendre ce que je fais plutôt que copier bêtement le prog).

    JM, pour subprocess.Call je regarde ça se soir. L'odée c'est de lancer mon .bat avec cette méthode? C'est bien ça?

    Bye et merci à vous tous

    EDIT:

    Ci dessous un exemple assez proche de mon code et qui me pose les mêmes problèmes, à savoir:
    1°) Démarrage de la gauge tardif.
    2°) Bloquage de la gauge lors du lancement de la fonction 2.

    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
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    #-*- coding:utf-8 -*-
     
    import wx
     
     
     
    class Root(wx.Frame):
     
        def __init__(self, titre):
            wx.Frame.__init__(self, None, -1, title = titre, size = (180,180))
            self.Center(True)
     
            self.font2 = wx.Font(8, wx.FONTFAMILY_DECORATIVE, wx.FONTSTYLE_NORMAL, wx.FONTWEIGHT_NORMAL, False, 'Verdana')
     
     
            #---------
     
            wx.EVT_BUTTON(self, 101, self.fonction1)
            wx.EVT_BUTTON(self, 102, self.fonction2)
     
     
            self.panel = wx.Panel(self, -1)
     
     
            self.btn3 = wx.Button(self.panel, 101, "Lancer la fonction 1", pos = (10, 10), size = (150,-1))
     
            self.gauge = wx.Gauge(self.panel, -1, 50, pos = (10,80), size = (150, -1))
            self.count = 0
     
     
        def TimerHandler(self,evt):
            self.count = self.count + 1
     
            if self.count >= 50:
                self.count = 0
     
            self.gauge.SetValue(self.count)
     
        def fonction1(self, evt):
            self.Bind(wx.EVT_TIMER, self.TimerHandler)
            self.timer = wx.Timer(self)
            self.timer.Start(100)
     
            nb = 300
            for i in range(nb):
                print u'position n° %s' % i
     
     
            self.btn4 = wx.Button(self.panel, 102, "Lancer la fonction 2", pos = (10, 40), size = (150,-1))
     
            evt.Skip()
     
     
        def fonction2(self, evt):
     
            self.Bind(wx.EVT_TIMER, self.TimerHandler)
            self.timer = wx.Timer(self)
            self.timer.Start(100)
     
            nb = 3000
            for i in range(nb):
                print u'position n° %s' % i
     
            evt.Skip()
     
     
            self.btn4.Destroy()
     
            self.gauge.SetValue(50)
            self.timer.Stop()
            self.gauge.SetValue(0)
     
     
            evt.Skip()
     
     
     
    class MonApp(wx.App):
        def OnInit(self):
            fen = Root('Essais Thread')
            fen.Show(True)
            self.SetTopWindow(fen)
            return True
    app = MonApp()
    app.MainLoop()
    Pouvez-vous me montrer comment un thread peut m'aider à résoudre ces problèmes?

    JM, lorsque je lance mon .bat avec subprocess.Call j'ai cette erreur:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     subprocess.Call("crea_project_etape1.bat")
    AttributeError: 'module' object has no attribute 'Call'
    Initiation à Qt Quick et QML : Partie 1 - Partie 2
    En cas de besoin, pensez à la
    Mon site et mes tutoriaux sur Developpez.com
    Pas de question technique par MP... Les forums sont là pour ça

  7. #7
    Membre averti
    Profil pro
    Inscrit en
    Mars 2008
    Messages
    36
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2008
    Messages : 36
    Par défaut
    dsl c'est subprocess.call et non pas subprocess.Call. Mais regarde la doc de subprocess, il y a plein de truc cool comme Popen qui permet de rediriger les pipes

    JM

Discussions similaires

  1. execution d'une gauge lors d'execution une requete
    Par lassmust dans le forum Delphi
    Réponses: 6
    Dernier message: 10/07/2006, 19h40
  2. Arrêter une connexion datasource
    Par yanis97 dans le forum JDBC
    Réponses: 1
    Dernier message: 18/01/2005, 16h45
  3. Arrêter une requête en cours
    Par Krapulax dans le forum PostgreSQL
    Réponses: 5
    Dernier message: 09/09/2004, 09h54
  4. Réponses: 3
    Dernier message: 06/07/2004, 10h21
  5. Arrêter une Thread brutalement!
    Par Rodrigue dans le forum C++Builder
    Réponses: 2
    Dernier message: 18/01/2004, 21h29

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