qmessageBox violation du droit d'acces (pyqt4)

Le problème exposé dans ce sujet a été résolu.

Bonsoir chers amis dans mon programme j’ai deux classes, la première classe fait appelle a la seconde en lui passant un QmessageBox, pour que la seconde puisse afficher des erreurs au cas ou il y en a. Mais je reçois le message d 'erreur suivant: Exception non gérée à 0x63B78994 (python34.dll) dans pythonw.exe : 0xC0000005 : Violation d’accès lors de la lecture de l’emplacement 0x00000058.

Pouvez vous m’expliquez un peu merci.

Ça m’a l’air d’une erreur de segmentation. Normalement, quel que soit ton code, c’est impossible en python, ce qui veut dire que c’est un bug de pyqt (qui d’après Wikipédia est en partie écrit en C++) ou de l’interpréteur. Une mise à jour de la lib' et de python pourrait peut-être résoudre ton problème.

Ah OK je reçois la même erreur lorsque je passe un label a ma deuxième classe et j’essaye de changer le qpixmap du label c’est a dire l’image du label(dans ce cas le qlabel disparait complètement).

Actuellement je suis un peu avancé dans mon projet et je ne voudrais pas faire de mise a jour. Mais qu’est ce que vous me conseillé pour pouvoir afficher des erreurs de traitement de la classe 2 dans la classe 1 , la classe 1 contient mon interface graphique tandis que la classe 2 contient mon code, les deux sont lancées dans des threads différents.

Merci pour vos différents suggestions.

je crois qu’au lieu d’utiliser un qmessageBox l’utilisation d’un qlabel peut m’arranger puisse qu’il ne me ramène pas ces genres d’erreur et je pourrai ensuite afficher les messages de l’autre classe dans mon interface qu’est ce que vous en dites?

Oui tu as vraiment raison je rencontre ce même problème avec les qlabels aussi aujourd’hui lorsque j’ai fait des tests sur mon logiciel. J’ai l’impression que ces erreurs viennent de pyqt4 je suis vraiment fatigué. Je sais plus comment faire pour pouvoir afficher des messages d’erreur de l’autre classe lancer dans un thread diffèrent dans mon interface graphique pour permettre a mes utilisateurs de voir les erreurs.

Avez vous d’autre idée pour faire passer des informations entre mon interface graphique et les autres classes sans avoir ces types d’erreurs? Merci pour vos réponses.
:’(:’(:’(

Si tu essaies de passer des objets et notamment des widgets d’un thread à l’autre, il n’y a rien d’étonnant à ce que tu te retrouves avec des erreurs de segmentation.

Comme le dit adri1, sans un bout de code, ça va être très difficile de t’aider.

Probablement un thread qui essaye d’accéder à de la mémoire qui ne lui appartient pas, comme déjà suggéré.

Pour la enième fois, on ne pourra pas t’aider plus sans le code, il serait bon de prendre en compte cette demande plutôt que l’ignorer royalement… Là, le sujet tourne en rond depuis le départ.

Je ne pourrai pas copier tous le code, parce qu’il est long. Mais la chose que j’aimerais savoir est - il possible de connecter ma fenêtre principal(interface graphique) qui tourne dans un thread a un autre programme 2 qui lui tourne dans un autre thread différent de sorte que lorsque le programme 2 se termine mon interface graphique puisse être alerter et afficher certains messages cela éviterai les problèmes de droit de lecture et écriture. Merci pour vos différentes réponses.

Votre aide me permettra de bien finaliser mon logiciel. Merci :D

Merci chers amis grâce a vos aides j’ai pu mener des investigations pour pouvoir détecter les différents variables qui créais des problèmes et les fixées. Mais j’ai une autre question est ce qu’on peut avoir ce type d’erreur avec sqlite3. Parce que lorsque ma classe chargement charge les données depuis internet et que ma classe interface essaye d’afficher ces données je reçois cette erreur encore je vous montre mes classes:

class telechargement:

def telecharger():
    numeroCommentaire = self.requete.requeteNumeroCommentaireParDate(dateCommentairePrecedentUtime)
    self.requete.enregistrementCommentaires(numeroPost, nomPosteur, numeroCommentaire, commentaire)

#self.requete.enregistrementCommentaires(arg1, ...) permet d'enregistrer le commentaire dans 
#ma Bd dans ma table commentaires

class interface:

def afficheCommentaire():
 self.commentaireParPost = self.requete.requeteCommentaires(self.numeroPost,self.OFFSET_COMMENTAIRE)


# self.requete.requeteCommentaires() permet de recuperer les commentaires
#ma Bd dans ma table commentaires

Lorsque la classe téléchargement télécharge les informations et je veux les afficher en meme temps avec la classe interface je reçois la même erreur.

Pouvez-vous m’aider?

je vais bien expliquez mon problème dans le but qu’il soit bien compréhensible par tous. Au début j’avais ce type d’erreur parce que je passais des widgets a plusieurs threads donc lorsque un thread essaye de modifier la valeur du widget tandis qu’un autre thread modifie le même widget je reçois l’erreur. Pour régler je me suis arranger a ne plus passer les mêmes widgets a mes threads.

Maintenant le problème que je vois cette fois ci c’est par rapport a sqlite3.

je vous présente mon code pour être plus explicite:

class telechargement:

    def telecharger():
        numeroCommentaire =  self.requete.requeteNumeroCommentaireParDate(dateCommentairePrecedentUtime)
        self.requete.enregistrementCommentaires(numeroPost, nomPosteur, numeroCommentaire, commentaire)


class interface:

      def afficheCommentaire():
          self.commentaireParPost =   self.requete.requeteCommentaires(self.numeroPost,self.OFFSET_COMMENTAIRE)

La classe téléchargement est lancée dans un thread et la classe interface est lancé dans un autre thread.

La classe telechargement récupére les informations et les enregistres dans la base de donnée sqlite3 data.db.

Je reçois une erreur de violation du droit d’accès lorsque ma classe interface essaye d’afficher les informations de la base de données data.db sachant que la classe telechargement est entrain de récupérer les informations.

Pouvez vous m’aider a éviter ce type d’erreur?

Merci pour différentes suggestions.

Connectez-vous pour pouvoir poster un message.
Connexion

Pas encore membre ?

Créez un compte en une minute pour profiter pleinement de toutes les fonctionnalités de Zeste de Savoir. Ici, tout est gratuit et sans publicité.
Créer un compte