В приведенном ниже примере я хочу отправить сигнал от A к Main и от B к Main. Прием сигнала от A в порядке, но B не работает. Сложность заключается в том, что «вычисления» в B должны запускаться из A, а не из Main. Будем признательны за любую помощь.
Главный:
import sys
from PyQt5.QtCore import pyqtSlot, QObject
from PyQt5.QtWidgets import QApplication
from A import A
from B import B
class Main(QObject):
def __init__(self):
super(Main, self).__init__()
self.a = A()
self.b = B()
self.a.msg.connect(self.show_message)
self.b.msg.connect(self.show_message)
@pyqtSlot(str)
def show_message(self, text):
print(text)
def start(self):
self.a.dojob()
if __name__ == '__main__':
app = QApplication(sys.argv)
m = Main()
m.start()
sys.exit(app.exec_())
класс А:
from PyQt5.QtCore import pyqtSignal, QObject
from B import B
class A(QObject):
msg = pyqtSignal(str)
def __init__(self):
super(A, self).__init__()
self.b = B()
def send_message(self):
self.msg.emit("from A")
def dojob(self):
self.send_message()
self.b.dojobB()
класс Б:
from PyQt5.QtCore import pyqtSignal, QObject
class B(QObject):
msg = pyqtSignal(str)
def __init__(self):
super(B, self).__init__()
def send_message(self):
self.msg.emit("from B")
def dojobB(self):
self.send_message()