Форум сайта python.su
Не получается сделать так, чтобы цвет текста плавно менялся.
В коде ниже я создаю текст и объект QPropertyAnimation, далее задаю цвета и скорость анимации, после чего начинаю ее делать и ничего не происходит
class MyWindow(QWidget): def __init__(self): super().__init__() self.lol() def lol (self): self.resize(500,300) lb = QLabel('ТЕКСТ',self) lb.move(100,100) effect = QGraphicsColorizeEffect() lb.setGraphicsEffect(effect) an = QPropertyAnimation(effect, QByteArray().append('color')) an.setStartValue((QColor(20,20,10))) an.setEndValue((QColor(200,200,10))) an.setDuration(200) an.start() if __name__ == '__main__': import sys app = QApplication(sys.argv) window = MyWindow() window.show() sys.exit(app.exec_())
QPropertyAnimation(effect,'color')
TypeError: arguments did not match any overloaded call: QPropertyAnimation(QObject parent=None): too many arguments QPropertyAnimation(QObject, QByteArray, QObject parent=None): argument 2 has unexpected type 'str'
an = QPropertyAnimation(effect, QByteArray().append('color'))
effect = QGraphicsColorizeEffect() lb.setGraphicsEffect(effect)
effect = QGraphicsColorizeEffect() effect.setColor(QColor(200,200,200) lb.setGraphicsEffect(effect)
Отредактировано Lestoroer (Май 2, 2016 20:50:24)
Офлайн
Не знаю даже что и сказать. Решил ли я проблему или нет. В общем решил написать программу в процедурном стиле и о боже внимание : Заработало.
Буду шаманить с ООП. У кого какие версии есть почему так произошло, скидываем. Код в принципе одинаковый (некоторые прибаутки с цветом добавил, но суть не меняется).
Моя версия падает на вот этот класс QGraphicsColorizeEffect(), он у меня почему то в ООП не очень хочет работать
app = QApplication(sys.argv) w = QWidget() w.resize(222,222) vbox = QHBoxLayout() lb = QLabel() lb.setPixmap(QPixmap('Маря')) lb.move(20,20) vbox.addWidget(lb) effect = QGraphicsColorizeEffect() lb.setGraphicsEffect(effect) an = QPropertyAnimation(effect, b"color") an.setStartValue(QColor('gray')) an.setKeyValueAt(0.25, QColor('green')) an.setKeyValueAt(0.5, QColor('blue')) an.setKeyValueAt(0.75, QColor('red')) an.setEndValue(QColor('black')) an.setDuration(3000) an.setLoopCount(-1) an.start() w.setLayout(vbox) w.show() if __name__ == '__main__': sys.exit(app.exec_())
Отредактировано Lestoroer (Май 2, 2016 23:00:11)
Офлайн
Госпаде, 4 дня убил на это. Решено :
an = QPropertyAnimation(effect, b"color", self)
Офлайн