Bonsoir, j'ai une interface PyQt5 avec un afficheur lcd. J'arrive à modifier sa valeur à partir d'un thread. Je souhaiterai créer un autre thread pour récupérer cette valeur depuis l'interface graphique. Pour d'autres widgets, ce sera , je pense le même principe. Merci d'avance. Voici le code:

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
from PyQt5.QtGui import *
from PyQt5.QtCore import *
from PyQt5.QtWidgets import *
import os,sys
 
 
# --- importation du fichier de description GUI ---
from ui_testLcd import *
 
# classe principale contenant le code actif
 
class myApp(QWidget, Ui_Form1): # la classe reçoit le Qwidget principal
# Note : ici self représente la classe
    def __init__(self, parent=None):
        QWidget.__init__(self) # initialise le Qwidget principal
        self.setupUi(parent) # Obligatoire
        self.Thread = ThreadAfficher(self)
        self.Thread.jobDone.connect(self.afficherDonnee)
        self.Thread.start()
 
 
    def afficherDonnee(self,regime):
            """Affichage de la valeur regime dans le l'afficheur"""
            self.lcdNumbe1r.display(regime)
 
class ThreadAfficher(QtCore.QThread):
        """objet thread gérant l'envoi de la valeur regime"""
        jobDone = pyqtSignal(int)
        def __init__(self,parent=None):
                super(ThreadAfficher,self).__init__(parent)
 
        def run(self):
                while 1:
                    self.jobDone.emit(3200) #envoi d'une valeur à afficher
 
 
 
# fonction principale exécutant l'application Qt
def main(args):
    a=QApplication(args) # crée l'objet application
    f=QWidget() # crée le QWidget racine
    c=myApp(f) # appelle la classe contenant le code de l'application
    f.show() # affiche la fenêtre QWidget
    r=a.exec_() # lance l'exécution de l'application
    return r
 
 
# pour rendre le fichier *.py exécutable
if __name__=="__main__": # pour rendre le code exécutable
    main(sys.argv) # appelle la fonction main