Émission et réception de signaux
:salut: à 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 :mrgreen:.
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) :
Code:
1 2 3
| from child1 import Child1
Child1().connect_and_emit_signal() |
script 2 (child1.py) :
Code:
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") |
script 3 (child2.py) :
Code:
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") |
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 :mouarf:.
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 :aie:
Une idée ?
Merci à tous par avance.
J