Не запускается приложение PySide во втором потоке

Я пытаюсь реализовать модель MVVM на Python, и для этого из файла ViewModel запускаю приложение PySide в отдельном потоке. В консоли видно что приложение доходит до точки запуска, и даже вроде запускается, но окно приложения не открывается. Не верю что бы PySide не мог не работать в отдельном потоке. И главное приложение рабочее, если не делать поток, окно запускается. Не работает оно только в потоке.

ViewModel:

from threading import Thread


class ViewThread(Thread):
    def __init__(self, View):
        Thread.__init__(self)
        self.view = View

    def run(self):
        self.view.startView()


class ViewModel:
    def __init__(self, View):
        self.View = View(self)

        view_thread = ViewThread(self.View)

        view_thread.start()


if __name__ == "__main__":
     from view import View
     VM = ViewModel(View)

View:

from PySide2 import QtCore, QtGui, QtWidgets
import sys
import interface


class View:
    def __init__(self, ViewModel):
        self.ViewModel = ViewModel

        self.app = QtWidgets.QApplication([])
        self.Dialog = QtWidgets.QMainWindow()
        ui = interface.Ui_MainWindow()

        ui.setupUi(self.Dialog)

    def startView(self):
        self.Dialog.show()
        sys.exit(self.app.exec_())

interface:

from PySide2.QtCore import *
from PySide2.QtGui import *
from PySide2.QtWidgets import *


class Ui_MainWindow(object):
    def setupUi(self, MainWindow):
        if not MainWindow.objectName():
            MainWindow.setObjectName(u"MainWindow")
        MainWindow.setWindowModality(Qt.NonModal)
        MainWindow.resize(700, 469)
        MainWindow.setMinimumSize(QSize(700, 469))
        MainWindow.setMaximumSize(QSize(700, 469))
        MainWindow.setCursor(QCursor(Qt.ArrowCursor))
        MainWindow.setMouseTracking(False)
        MainWindow.setTabletTracking(False)
        MainWindow.setLayoutDirection(Qt.LeftToRight)
        MainWindow.setStyleSheet(u"background-color: #2F3136")
        MainWindow.setDocumentMode(False)
        MainWindow.setTabShape(QTabWidget.Triangular)
        MainWindow.setUnifiedTitleAndToolBarOnMac(False)
        self.centralwidget = QWidget(MainWindow)
        self.centralwidget.setObjectName(u"centralwidget")

    def retranslateUi(self, MainWindow):
        MainWindow.setWindowTitle(QCoreApplication.translate("MainWindow", u"Noname", None))
#if QT_CONFIG(whatsthis)
        MainWindow.setWhatsThis("")
#endif // QT_CONFIG(whatsthis)
        MainWindow.setWindowFilePath("")

Ответы (0 шт):