【问题标题】:PySide2 "QAnimationGroup::animationAt: index is out of bounds" warningPySide2“QAnimationGroup::animationAt: index is out of bounds”警告
【发布时间】:2020-02-26 09:25:25
【问题描述】:

我正在使用 PySide2,以下示例脚本会生成警告:QAnimationGroup::animationAt: index is out of bounds

from PySide2 import QtCore

def add_animation(banner):
    anim1 = QtCore.QPropertyAnimation(None, "geometry")
    anim2 = QtCore.QPropertyAnimation(None, "geometry")
    banner.addAnimation(anim1)
    banner.addAnimation(anim2)

banner_animation = QtCore.QSequentialAnimationGroup(None)
add_animation(banner_animation)
# This is the line that generates the warning:
banner_animation.clear()

似乎如果我向组中添加多个动画并尝试清除它们,我会收到警告。添加单个动画不会导致警告。我已经使用 QT 版本 5.12、5.13 和 5.14 进行了测试。

这是一个错误还是我在这里做了一些奇怪的事情?

【问题讨论】:

    标签: qt5 pyside2


    【解决方案1】:

    啊,我认为这可能是垃圾收集问题。 anim1anim2 对象正在被收集,因为它们在方法退出时被清除,但 Qt 仍然持有对它们的引用。 例如以下工作:

    from PySide2 import QtCore
    
    def add_animation(banner):
        anim1 = QtCore.QPropertyAnimation(None, "geometry")
        anim2 = QtCore.QPropertyAnimation(None, "geometry")
        banner.addAnimation(anim1)
        banner.addAnimation(anim2)
        return anim1, anim2
    
    banner_animation = QtCore.QSequentialAnimationGroup(None)
    anim1, anim2 = add_animation(banner_animation)
    
    banner_animation.clear()
    

    【讨论】:

      猜你喜欢
      • 2021-05-07
      • 2017-04-09
      • 2012-01-18
      • 1970-01-01
      • 2021-10-18
      • 2021-12-17
      • 1970-01-01
      • 2017-05-20
      • 1970-01-01
      相关资源
      最近更新 更多