Не запускается приложение 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("")