Обычно в приложениях Qt вы должны использовать это в начале и в конце вашего кода:
app = QtWidgets.QApplication(sys.argv)
...
app.exec_()
Но в Maya вы не используете это, потому что Qt сам работает в приложении Maya. Я уверен, что это работает и для многих других приложений, если вы не знаете, что такое Maya. Тем не менее, мой код выглядит так:
import sys
from PySide2 import QtWidgets, QtGui, QtCore
class Test():
def __init__(self):
self.open_qt()
def open_qt(self):
# app = QtWidgets.QApplication(sys.argv) # Don't need this in Maya
self.window = QtWidgets.QWidget() # I tried QDialog also
btn = QtWidgets.QPushButton("press me")
btn.clicked.connect(self.login)
lay = QtWidgets.QVBoxLayout()
lay.addWidget(btn)
self.window.setLayout(lay)
self.window.show()
# app.exec_() # Don't need this in Maya
def login(self):
print("logged in!")
print("before")
temp = Test()
print("after")
Но запустив это в Maya, я получаю такой результат:
before
after
logged in!
Но мне нужно, чтобы это было:
before
logged in!
after
Если вы запустите этот код вне Maya (и вы используете эти две закомментированные строки), вы получите правильный результат (блок выше здесь).
Как заставить Maya Qt также правильно ожидать, как если бы вы использовали QtWidgets.QApplication(sys.argv)
?