Чтобы узнать, какой из них правильный, необходимо проанализировать поведение исходного источника:
#include <QtWidgets>
int main(int argc, char *argv[])
{
QApplication a(argc, argv);
QGraphicsRectItem rect;
rect.setTransformations({new QGraphicsScale()});
int n = rect.transformations().length();
char message[80];
sprintf(message, "object has %d transformations (expecting 1)", n);
Q_ASSERT_X(n == 1, "QGraphicsItem::setTransformations()", message);
}
И когда оно выполнено, ошибка не сбрасывается, поэтому PyQt5 имеет соответствующее поведение.
В случае PySide2 у него есть проблемы с обработкой объектов, которые не назначены переменной, в этом случае решение состоит в том, чтобы назначить список переменной:
from PySide2.QtWidgets import QGraphicsRectItem, QGraphicsScale
rect = QGraphicsRectItem()
<b>transforms = [QGraphicsScale()]</b>
rect.setTransformations(<b>transforms</b>)
n = len(rect.transformations())
assert n == 1, f"object has {n} transformations (expecting 1)"