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_()
Другие вопросы по тегам