QSplashScreen не показывает изображение pyqt5
Я пытаюсь показать заставку перед загрузкой основного окна, но вместо предполагаемого изображения отображается прозрачное окно. Предполагается, что экран-заставка будет отображаться после импорта и загрузки экземпляра Dashboard, что занимает несколько секунд, но изображение отображается только тогда, когда экран-заставка собирается закрыть. Ниже мой код:
from PyQt5 import QtWidgets
from PyQt5.QtCore import Qt, QThread
from PyQt5.QtGui import QPixmap
from modules.video_opening.map.map import Map
import sys
if __name__ == "__main__":
app = QtWidgets.QApplication(sys.argv)
splash_pic = QPixmap('splash.png')
splash = QtWidgets.QSplashScreen(splash_pic, Qt.WindowStaysOnTopHint)
splash.setWindowFlags(Qt.WindowStaysOnTopHint | Qt.FramelessWindowHint)
splash.setEnabled(False)
splash.setMask(splash_pic.mask())
splash.showMessage("<h6>Loading...</h6>", Qt.AlignBottom | Qt.AlignRight, Qt.black)
splash.show()
app.processEvents()
from modules.dashboard import Dashboard
dashboard = Dashboard()
splash.finish(dashboard)
dashboard.show()
app.exec_()
1 ответ
Вот что у меня работает сейчас: добавление цикла app.processEvents()
from PyQt5 import QtWidgets
from PyQt5.QtCore import Qt, QThread
from PyQt5.QtGui import QPixmap
from modules.video_opening.map.map import Map
import sys
if __name__ == "__main__":
app = QtWidgets.QApplication(sys.argv)
splash_pic = QPixmap('splash.png')
splash = QtWidgets.QSplashScreen(splash_pic, Qt.WindowStaysOnTopHint)
splash.setWindowFlags(Qt.WindowStaysOnTopHint | Qt.FramelessWindowHint)
splash.setEnabled(False)
splash.setMask(splash_pic.mask())
splash.showMessage("<h6>Loading...</h6>", Qt.AlignBottom | Qt.AlignRight, Qt.black)
splash.show()
for i in range(10000):
app.processEvents()
from modules.dashboard import Dashboard
dashboard = Dashboard()
splash.finish(dashboard)
dashboard.show()
app.exec_()