PySide2 Предупреждение "QAnimationGroup :: animationAt: index вне границ" - PullRequest
0 голосов
/ 26 февраля 2020

Я использую 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 Ответ

0 голосов
/ 26 февраля 2020

Ах, я думаю, что это проблема сбора мусора. Объекты 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()
...