PySide2“ QAnimationGroup :: animationAt:索引超出范围”警告

问题描述 投票:0回答:1

我正在使用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个回答
0
投票

啊,我认为这可能是垃圾回收问题。当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()
© www.soinside.com 2019 - 2024. All rights reserved.