@dimon_9519

Анимация исчезновения виджета в PyQT5?

Надо создать постоянную анимацию исчезновения и появления виджета. То есть простым языком виджет self.wid постепенно исчезает и также постепенно появляется.
Есть такой код в качестве примера:

import sys
from PyQt5 import QtWidgets, QtCore
from PyQt5.QtCore import QRect, Qt
from PyQt5.QtWidgets import QMainWindow


class Test(QMainWindow):
    def __init__(self):
        super(Test, self).__init__()

        self.setStyleSheet('background:blue;')
        self.resize(200, 200)

        self.wid = QtWidgets.QWidget(self)
        self.wid.setStyleSheet('background:red;')
        self.wid.setGeometry(QRect(0, 0, 100, 100))

        self.group = QtCore.QSequentialAnimationGroup(self)
        self.group.setLoopCount(-1)

        self.ani_1 = QtCore.QPropertyAnimation(self.wid, b"windowOpacity")  # Исчезновение
        self.ani_1.setDuration(1500)
        self.ani_1.setStartValue(1.0)
        self.ani_1.setEndValue(0)

        self.ani_2 = QtCore.QPropertyAnimation(self.wid, b"windowOpacity")  # Появление
        self.ani_2.setDuration(1500)
        self.ani_2.setStartValue(0)
        self.ani_2.setEndValue(1.0)

        self.group.addAnimation(self.ani_1)
        self.group.addAnimation(self.ani_2)

        self.start_fun()

    def start_fun(self):
        self.group.start()


if __name__ == "__main__":
    app = QtWidgets.QApplication(sys.argv)
    w = Test()
    w.show()
    sys.exit(app.exec_())


В этом варианте ничего не происходит, self.wid просто не реагирует на анимацию, но если в строке определения анимации self.ani_1 = QtCore.QPropertyAnimation(self.wid, b"windowOpacity"), прописать вместо self.wid -> self, то анимация будет распространятся на все окно, а не только на красный квадрат, как сделать так, чтоб только красный квадрат исчезал?
  • Вопрос задан
  • 329 просмотров
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы