à tous,
Je bute sur un problème à priori simple mais avec lequel je m'arrache les cheuveux : l'émission et la réception de signaux personnalisés avec PyQt5. Je sais que ce dernier point (PyQt5) risque d'en coincer quelques uns, mais sait-on jamais.
L'idée est simple : j'ai 3 scripts Python. Le premier appel une fonction du deuxième qui émet un signal qui doit être capté par le troisième.
script 1 (main.py) :
script 2 (child1.py) :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3 from child1 import Child1 Child1().connect_and_emit_signal()
script 3 (child2.py) :
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 from PyQt5.QtCore import QObject, pyqtSignal class Child1(QObject): def __init__(self, parent=None): super(Child1, self).__init__(parent) signal = pyqtSignal() signal2 = pyqtSignal() signal3 = pyqtSignal() def connect_and_emit_signal(self): self.signal.connect(self.handle_signal) self.signal2.connect(Child1_1().handle_signal) self.signal.emit() self.signal2.emit() self.signal3.emit() def handle_signal(self): print ("signal received") class Child1_1(QObject): def handle_signal(self): print ("signal2 received")
Le code est très raccourci, et pour diverses raisons j'aimerai éviter d'avoir à supprimer l'import de child1 dans child2 au profit de l'inverse, ce qui simplifierai grandement les choses mais qui serait nettement moins drôle
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12 from PyQt5.QtCore import QObject, pyqtSignal from child1 import Child1 class Child2(QObject): def __init__(self, parent=None): super(Child2, self).__init__(parent) Child1().signal3.connect(self.handle_signal) def handle_signal(self): print ("signal3 received").
Il me semble avoir déjà fait ça avec PyQt4, mais la syntaxe SLOT et SIGNAL a pas mal changé avec la version 5, du coup je bloque
Une idée ?
Merci à tous par avance.
J
Partager