Экран загрузки не отображается внутри QWidget - PullRequest
0 голосов
/ 15 апреля 2020

Я создал экран загрузки, который должен появляться, когда я нажимаю кнопку, запускающую указанный сценарий c, выполняемый функцией run_script () в приведенном ниже коде, и исчезает при выполнении сценарий завершен, и вызывается функция show_popup () . Я использовал для этого QMov ie, к сожалению, Qwidget появляется нормально при нажатии кнопки и вызывается функция run_script () , но изображение загрузочного gif не появляется внутри виджета, но он появляется после завершения выполнения скрипта. Я пропустил stopAnimation () для проверки, чтобы увидеть, нормально ли отображается виджет Загрузка:

class LoadingScreen(QtWidgets.QWidget):
    def __init__(self):
        super().__init__()
        self.initUI()

    def initUI(self):

        self.setFixedSize(100, 100)
        self.setWindowFlags(Qt.WindowStaysOnTopHint | Qt.CustomizeWindowHint)
        self.label_animation = QLabel(self)
        # self.label_animation.setStyleSheet("""{ background-image: url('./Icons/Pulse-1s-100px.gif');}""")
        self.movie= QMovie('./Icons/Pulse-1s-100px.gif')
        self.label_animation.setMovie(self.movie)
        # self.label_animation.setPixmap(QtGui.QPixmap("./Icons/Pulse-1s-100px.gif"))
        # timer= QTimer(self)
        # timer.singleShot(3000,self.stopAniamtion)
        self.show()


    def startAnimation(self):
        self.movie.start()


    # def stopAniamtion(self):
        # self.movie.stop()
        # self.close()

     def run_script(self):

        self.loading_screen= LoadingScreen()

        self.loading_screen.startAnimation()

     def show_popup(self, state):
        # self.loading_screen.stopAniamtion()

, когда я нажимаю кнопку, вызывается run_script () виджет появляется, но внутри ничего нет. После того, как скрипт завершил выполнение, загрузочный gif появляется внутри виджета. Я думаю, что функция run_script () работает быстрее, чем загрузка GIF-файла внутри виджета.

...