PySide2“QAnimationGroup::animationAt: index is out of bounds”警告
Posted
技术标签:
【中文标题】PySide2“QAnimationGroup::animationAt: index is out of bounds”警告【英文标题】:PySide2 "QAnimationGroup::animationAt: index is out of bounds" warning 【发布时间】: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 进行了测试。
这是一个错误还是我在这里做了一些奇怪的事情?
【问题讨论】:
【参考方案1】:啊,我认为这可能是垃圾收集问题。 anim1
和 anim2
对象正在被收集,因为它们在方法退出时被清除,但 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()
【讨论】:
以上是关于PySide2“QAnimationGroup::animationAt: index is out of bounds”警告的主要内容,如果未能解决你的问题,请参考以下文章
Qt炫酷动画4.QAnimationGroup动画组QParallelAnimationGroup平行动画组QSequentialAnimationGroup顺序动画组
Qt炫酷动画4.QAnimationGroup动画组QParallelAnimationGroup平行动画组QSequentialAnimationGroup顺序动画组
Pyside2.QtCore.QObject 不是 MyTableWidget 的直接基类——PySide2 出错