Проблема описана на верхней диаграмме: считыватель читает изображение a
, и два объекта P1 и P2 должны обработать эти данные изображения. Обработка в P2 включает в себя как исходное изображение a
, так и вывод P1: b
. И P1, и P2 расширяют QWidget, а методы - это слоты: P1.process(a)
и P2.process(a, b)
.
![Top:the problem. Bottom: attempted solution](https://i.stack.imgur.com/XXzXW.png)
В идеальном мире я бы хотел есть способ соединить два сигнала, a
от Reader
и b
от P1
, подключиться к двум параметрам слота (я думаю о чем-то похожем на LabView). Но похоже, что сигналы Qt и соединения слотов этого не позволяют.
В качестве обходного пути я создал фиктивный класс в качестве посредника, в котором входные данные для slot_a
просто сохраняют входное значение в атрибуте dummy._a
и вводят в slot_b
отправляет сигнал с двумя аргументами (dummy._a, b)
, и он принимается P2.slot_ab(a, b)
, который завершил обработку в P2.
Но, очевидно, нет простого способа гарантировать, что Dummy.slot_a
будет вызывается до Dummy.slot_b
, поэтому значение a
может не инициализироваться или устареть.
Каким будет хороший и простой способ передать a
и соответствующее значение b
в P2 и запустить его обработку?
Для этого я использую pyqt5.