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

PyQt Python Discussion :

Un problème de thread [QtCore]


Sujet :

PyQt Python

  1. #1
    Membre averti
    Inscrit en
    Juillet 2009
    Messages
    29
    Détails du profil
    Informations personnelles :
    Âge : 31

    Informations forums :
    Inscription : Juillet 2009
    Messages : 29
    Par défaut Un problème de thread
    Salut
    j'ai un problème assez important sur un programme PyQt que je fais
    en gros j'ai lancé un thread qui utilise self.hide () et self.show () dans une boucle qui dépend d'une variable globale
    je n'ai aucun problème avec le hide () mais quand il y'a le show () le programme plante
    je vous fais un schéma :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    class MyThread (QThread) :
      def run () :
        while loop :
          # traitement ...
          self.hide ()
          # traitement ...
          self.show ()
          #...
        self.exec_ ()
    désolé de ne pas pouvoir préciser encore plus le code, mais je dois plus ou moins le garder secret.
    voilà le code d'erreur quand je fais les tests :
    QCoreApplication::sendPostedEvents: Cannot send posted events for objects in another thread
    QCoreApplication::sendPostedEvents: Cannot send posted events for objects in another thread
    QCoreApplication::sendPostedEvents: Cannot send posted events for objects in another thread
    <unknown>: Fatal IO error 11
    (Ressource temporairement non disponible) on X server :0.0.
    personnellement je pense qu'il s'agit d'un problème de plateforme (je suis sous linux) mais je voulais votre avis
    REMARQUE : Le problème reste le même quand j'utilise setVisible et setShown
    merci pour vos réponses

  2. #2
    Expert confirmé
    Avatar de tyrtamos
    Homme Profil pro
    Retraité
    Inscrit en
    Décembre 2007
    Messages
    4 486
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Retraité

    Informations forums :
    Inscription : Décembre 2007
    Messages : 4 486
    Billets dans le blog
    6
    Par défaut
    Bonjour,

    Le problème est: les threads ne doivent pas toucher directement au graphique.

    La solution est que le thread envoie un message au graphique, qui, en le recevant, lance une de ses méthodes.

    Ici, un petit exemple d'un thread qui télécharge un fichier du web, et qui envoie pendant l'action des messages à la fenêtre graphique pour mettre à jour une barre de progression:

    http://pyqt.developpez.com/tutoriels...rger-fichiers/

    Tyrtamos

  3. #3
    Membre averti
    Inscrit en
    Juillet 2009
    Messages
    29
    Détails du profil
    Informations personnelles :
    Âge : 31

    Informations forums :
    Inscription : Juillet 2009
    Messages : 29
    Par défaut
    Merci infiniment
    ça marche maintenant

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

Discussions similaires

  1. Problème de thread : Plus de ressources système
    Par OliverSleep dans le forum C++Builder
    Réponses: 17
    Dernier message: 07/02/2006, 15h35
  2. [VB.NET] Problème de Thread
    Par Sadneth dans le forum ASP.NET
    Réponses: 26
    Dernier message: 31/01/2006, 10h12
  3. Problème synchronisation threads
    Par Linio dans le forum Concurrence et multi-thread
    Réponses: 19
    Dernier message: 11/01/2006, 16h57
  4. [MFC] Problème de Threads + Timers
    Par Invité dans le forum MFC
    Réponses: 8
    Dernier message: 30/11/2005, 10h51
  5. [VC++6][DX9] Problème de thread lors d'un blit ...
    Par grandjouff dans le forum DirectX
    Réponses: 2
    Dernier message: 12/06/2003, 22h22

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