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

Python Discussion :

erreur thread après changement de variable


Sujet :

Python

  1. #1
    Membre averti
    Profil pro
    Inscrit en
    Mai 2006
    Messages
    15
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2006
    Messages : 15
    Par défaut erreur thread après changement de variable
    Bonjour à tous.

    Je rencontre un problème sur mon programme avec un thread.

    Voici le code de déclaration du thread:

    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
    import os,sys
    import RPi.GPIO as GPIO
    import time
    import threading
    class CreationSql(QtCore.QThread):                                                      # Thread de creation Table SQL
     
            def __init__(self, parent, NomSQL):
                    super(CreationSql, self).__init__(parent)                               # Permet la transmission de parametre entre la class fenetre et le QThread
                    self.NomSQL = NomSQL                                                    # Transmission de la variable NomSQL
     
            def run(self):
     
                    try:
                            mydb = mc.connect(
                                    host="localhost",
                                    user=USER.strip(), 
                                    password=MDP.strip(), 
                                    database="RADIORT",
                                    charset='utf8mb4'
                            )
                            mycursor = mydb.cursor()
                            query = "SHOW TABLES LIKE '" + self.NomSQL + "'"
                            mycursor.execute(query)
                            result = mycursor.fetchone()
                            if result:
                                    pymsgbox.alert("La table exist", "Nom Table SQL")
                            else:
                                    query = "CREATE TABLE IF NOT EXISTS " + self.NomSQL + " (time bigint(30) NOT NULL, BdfMoy int(6) DEFAULT NULL, MesMoy int(6) DEFAULT NULL, MesNet int(6) DEFAULT NULL)"
                                    mycursor.execute(query)
                                    mydb.commit()
                                    pymsgbox.alert("La table à etait creer", "Nom Table SQL")
     
                    except mc.Error as e:
                            print("echec")
     
                    finally:
     
                            mydb.close()
    Voici le code de lancement du thread quand je Clique sur un pushButton:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    self.SQL = CreationSql(self, NomSQL)                                    # definition et lancement du thread de creation SQL
    self.SQL.start()
    Le problème viens quand je veux relancer le Thread avec un autre nom de base SQL j'ai le message:

    Tcl_AsyncDelete: async handler deleted by the wrong thread Aborted
    J'ai essayé avant de relancer le thread un self.SQL.stop() sans succès.

    Avez-vous une solution?

    Merci d'avance.

  2. #2
    Expert éminent
    Homme Profil pro
    Architecte technique retraité
    Inscrit en
    Juin 2008
    Messages
    21 589
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Manche (Basse Normandie)

    Informations professionnelles :
    Activité : Architecte technique retraité
    Secteur : Industrie

    Informations forums :
    Inscription : Juin 2008
    Messages : 21 589
    Par défaut
    Salut,

    Déjà il faudrait comprendre pourquoi on se retrouve dans TCL/tk alors que vous devriez utiliser PyQT partout...

    - W
    Architectures post-modernes.
    Python sur DVP c'est aussi des FAQs, des cours et tutoriels

  3. #3
    Membre averti
    Profil pro
    Inscrit en
    Mai 2006
    Messages
    15
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2006
    Messages : 15
    Par défaut
    Je viens de trouver c'est le message pymsgbox.alert("La table exist", "Nom Table SQL") qui mettais le bazar.

  4. #4
    Membre actif
    Homme Profil pro
    Animateur Numérique
    Inscrit en
    Février 2013
    Messages
    140
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Animateur Numérique
    Secteur : Arts - Culture

    Informations forums :
    Inscription : Février 2013
    Messages : 140
    Par défaut
    Citation Envoyé par Mike1979 Voir le message
    Je viens de trouver c'est le message pymsgbox.alert("La table exist", "Nom Table SQL") qui mettais le bazar.
    Salut,
    Pourquoi utiliser pymessagebox qui dépend de Tkinter alors que QMessageBox fait largement le boulot !!!

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

Discussions similaires

  1. Erreur sur le site après changement du mode d'authentification
    Par Siguillaume dans le forum Configuration
    Réponses: 0
    Dernier message: 23/12/2014, 21h21
  2. Réponses: 0
    Dernier message: 08/04/2014, 11h00
  3. [BO 5.1] Erreur après changement de langue
    Par logica dans le forum Deski
    Réponses: 4
    Dernier message: 14/02/2008, 23h31
  4. Erreur Edition de lien après changement de version
    Par Alfred83 dans le forum wxWidgets
    Réponses: 2
    Dernier message: 09/01/2007, 16h17

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