Стыковка PyQt Windows из отдельных процессов - PullRequest
0 голосов
/ 02 октября 2019

Я занимаюсь разработкой приложения на основе PyQt, в котором есть некоторые компоненты, которые выполняют тяжелую работу в потоке графического интерфейса пользователя (в реальном времени отображают некоторые относительно большие наборы данных).

Мой опыт показывает, что другие части моего графического интерфейса могутпока что это происходит, я не отвечаю, а также хочу запустить несколько потоков и избежать старой проблемы GIL.

Чтобы обойти обе эти проблемы, я хочу запускать различные части своего приложения как отдельные процессы(либо используя многопроцессорный модуль, либо запуская параллельные экземпляры Python, которые обмениваются данными через сокеты).

Мне интересно, можно ли каким-либо образом заставить окна других процессов подключаться в моем главном окне.

Минимальный пример по запросу:

sub_proc_a.py

from PyQt5 import QtWidgets

app = QtWidgets.QApplication([])

sub_process_window = QtWidgets.QWidget()
sub_process_window.setWindowTitle("Dock Me!")
sub_process_window.show()

app.exec_()

master_proc.py

from PyQt5 import QtWidgets
from subprocess import Popen

app = QtWidgets.QApplication([])

main_window = QtWidgets.QMainWindow()
main_window.setWindowTitle("Main window")
main_window.show()

sub_proc_a = Popen("python sub_proc_a.py")

# HOW DO I GET HANDLES TO THE WINDOWS OPENED by sub_proc_a such that I can dock them?

app.exec_()
...