Python3 PyQt5. Как запустить метод окна PyQt из основного процесса? - PullRequest
0 голосов
/ 07 марта 2020

Как запустить метод окна PyQt MainWindow.load_url() из основного процесса?

from multiprocessing import Process
import sys
from PyQt5 import QtWidgets
from PyQt5.QtWidgets import QMainWindow
from PyQt5.QtCore import *
from PyQt5.QtWebKitWidgets import *


class MainWindow(QMainWindow):
    def __init__(self):
        QMainWindow.__init__(self)

        self.desktop_size = QtWidgets.QDesktopWidget().screenGeometry()
        self.__browser = QWebView(self)
        # todo
        self.init_ui()

    def init_ui(self):
        self.__browser.resize(self.desktop_size.width(), self.desktop_size.height())
        self.load_url('https://stackoverflow.com/')

        self.showFullScreen()

    def load_url(self, url: str):
        self.__browser.load(QUrl(url))


def run_qt():
    app = QtWidgets.QApplication(sys.argv)
    x = MainWindow()
    sys.exit(app.exec_())


class QtGui:
    process = None

    @staticmethod
    def read_process():
        if QtGui.process is None:
            QtGui.process = Process(target=run_qt)
        return QtGui.process

    @staticmethod
    def stop_process():
        if QtGui.process is not None:
            if QtGui.process.is_alive():
                QtGui.process.terminate()
                QtGui.process = None

    @staticmethod
    def start_process():
        if QtGui.read_process().is_alive() is False:
            QtGui.read_process().start()


if __name__ == '__main__':
    qtGui = QtGui()
    qtGui.start_process()

    """
        how to run method MainWindow.load_url() from here
    """

Я попытался создать экземпляр QWebKit в основном процессе и передать его в качестве аргумента для доступа к это в двух процессах, но PyQt не принимает это, что я понимаю. К сожалению, я не знаю, как я могу это сделать. Спасибо

...