从线程调用的类中的动画函数不起作用

时间:2018-05-24 12:16:03

标签: python qt5 pyside2

我有一个qt5 ui文件,我通过淡入/淡出功能的类加载:

one
four
three
two
end

我正在加载:

class LoadingScreen(QWidget):
    def __init__(self):
        super(LoadingScreen, self).__init__()
        loader = QUiLoader()
        file = QFile("loading_screen.ui")
        file.open(QFile.ReadOnly)
        global loading_screen
        loading_screen = loader.load(file, self)
        file.close()
        self.initUI()

    def fadeIN(self):
        self.fade_in = QPropertyAnimation(self,"windowOpacity")
        self.fade_in.setDuration(500)
        self.fade_in.setStartValue(0.0)
        self.fade_in.setEndValue(1.0)
        self.fade_in.setEasingCurve(QEasingCurve.InBack)
        self.fade_in.start()
        self.show()

    def fadeOUT(self):
        self.fade_out = QPropertyAnimation(self,"windowOpacity")
        self.fade_out.setDuration(500)
        self.fade_out.setStartValue(1.0)
        self.fade_out.setEndValue(0.0)
        self.fade_out.setEasingCurve(QEasingCurve.OutBack)
        self.fade_out.start()

然后我开始一个做一些事情的线程,比如阅读配置:

global loading_screen_window
loading_screen_window = LoadingScreen()

在我希望调用我的LoadingScreen()类的淡出功能的线程的某个点上工作正常。该功能被执行但动画不起作用?我究竟做错了什么?在其他地方调用淡出函数可以正常工作,但不在我的线程中。

我使用的是Python 2.7,Qt5和PySide2。

感谢您的帮助!!

1 个答案:

答案 0 :(得分:0)

我找到了解决方案:

class LoadingScreen(QWidget):
    def __init__(self):
        super(LoadingScreen, self).__init__()
        loader = QUiLoader()
        file = QFile("loading_screen.ui")
        file.open(QFile.ReadOnly)
        global loading_screen
        loading_screen = loader.load(file, self)
        file.close()
        self.initUI()

        #Config Thread starten
        self.config_thread = config()
        self.config_thread.finished.connect(self.fadeOUT)
        self.config_thread.start()

感谢您的帮助eyllanesc:)