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 :

wx.App.Yield() et freeze de mon interface


Sujet :

wxPython

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Profil pro
    Inscrit en
    Avril 2002
    Messages
    16
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2002
    Messages : 16
    Par défaut wx.App.Yield() et freeze de mon interface
    Bonjour,

    Deux jours que je me prend la tête sur un freeze de mon interface. Voici le code simplifié. Après avoir cliqué sur oui, ma progressbar n'est pas mise à jour (la plupart du temps) et on a donc l'impression que mon programme est planté...
    Suis-je obligé de passer par un thread pour résoudre ce problème?


    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
    #!/usr/bin/python
    # -*- coding:utf-8 -*-
     
    import sys, wx, Utilities
     
     
     
    class MonAppli(wx.App):
        def OnInit(self):
     
            self.fen = wx.Frame(None, -1, "ma frame", size = (1020, 700))
     
            self.monPanneau = wx.Panel(self.fen, -1, pos=(25,50), size=(600,600))
     
            self.fen.Show()
     
            a = 0
     
            maBarre = wx.ProgressDialog("Please wait...", "", 10)
     
            maBarre.Update ( 4, 'Step 4/10')
     
            dlg = wx.MessageDialog(self.fen, "mon message",
              '', wx.YES_NO | wx.ICON_INFORMATION) 
     
     
            if dlg.ShowModal() == wx.ID_YES:
     
                dlg.Destroy()
     
                maBarre.Update ( 5, 'Step 5/10')
     
                self.Yield()
     
                while a < 1000000000:
                    a = a +1
                    print a
     
     
            return True
     
     
    myApp = MonAppli()
     
    myApp.MainLoop()

    Merci de votre aide.

    PS je suis sous debian

  2. #2
    Expert confirmé
    Avatar de Guigui_
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Août 2002
    Messages
    1 864
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : France, Saône et Loire (Bourgogne)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : Enseignement

    Informations forums :
    Inscription : Août 2002
    Messages : 1 864
    Par défaut
    il te faudra passer par un thread.
    De plus toute modification de l'affichage graphique doit se faire dans le thread principal (sinon passer par des wx.CallAfter)

Discussions similaires

  1. énorme problème avec mon interface MFC
    Par cenedra dans le forum MFC
    Réponses: 23
    Dernier message: 17/07/2006, 09h36
  2. énorme problème avec mon interface MFC
    Par cenedra dans le forum C++
    Réponses: 2
    Dernier message: 12/07/2006, 09h54
  3. [Framework] [APP J2EE] pourquoi intégrer spring à mon application.
    Par nikalkal dans le forum Spring
    Réponses: 12
    Dernier message: 25/04/2006, 13h10
  4. Le JPanel est trop reduit pour mon interface !
    Par LeNeutrino dans le forum JBuilder
    Réponses: 4
    Dernier message: 25/07/2005, 18h58
  5. quel langage choisir pour mon interface graphique
    Par mrom34 dans le forum Langages de programmation
    Réponses: 6
    Dernier message: 09/03/2004, 19h12

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