У меня есть GIF, который должен запускаться в отдельном потоке, как только будет выполнена функция загрузки после нажатия кнопки «Да» в окне сообщения. Сначала он запускается до нажатия кнопки «да», после нажатия кнопки «да» он блокируется и не попадает в отдельный поток. Я думаю, что он не перемещается в новый поток, а выполняется в том же потоке. Я хочу, чтобы он перешел в новую ветку. Мой код выглядит следующим образом.
from PyQt5.QtCore import QObject, QThread, Qt, QObject
from PyQt5.QtWidgets import QMainWindow, QDialog, QVBoxLayout, QApplication, QMessageBox, QLabel
from PyQt5.QtGui import QMovie
class LOADINGSCREEN(QThread, QObject):
def __init__(self):
super().__init__()
self.LOADIGWINDOW = QDialog()
self.LOADIGWINDOW.setWindowFlags(Qt.SplashScreen)
self.LOADIGWINDOW.setAttribute(Qt.WA_DeleteOnClose)
self.MOVIE = QMovie("C:/Users/Siva/Desktop/test.gif", cacheMode=QMovie.CacheAll)
self.LOADINGLABEL = QLabel(alignment=Qt.AlignCenter)
self.LOADINGLABEL.setMovie(self.MOVIE)
self.LOADINGVBOX = QVBoxLayout(self.LOADIGWINDOW)
self.LOADINGVBOX.addWidget(self.LOADINGLABEL)
self.LOADIGWINDOW.show()
self.MOVIE.start()
print("THE LOADING SCREEN HAS BEEN STARTED")
########################################################################################
class GUI(QMainWindow):
def __init__(self):
super().__init__()
self.LOADINGSCREEN = LOADINGSCREEN()
self.PROMPT = QMessageBox()
RESPONSE = self.PROMPT.question(self,'', "DO YOU WANT TO DOWNLOAD DATA ?", self.PROMPT.Yes | self.PROMPT.No)
if RESPONSE == self.PROMPT.Yes:
self.THREAD = QThread()
self.THREAD.start()
self.LOADINGSCREEN.moveToThread(self.THREAD)
self.downloaddata()
else:
pass
print("GOING TO GUI CREATION")
def downloaddata(self):
for i in range(5):
QThread.msleep(1000)
print(i)
## self.LOADINGSCREEN.MOVIE.stop()
########################################################################################
if __name__ == "__main__":
APP = QApplication([])
GUI = GUI()
GUI.show()
APP.exec_()