要在我的应用程序中显示SVG图形,我使用GtGui.QgraphicsView,QtGui.QgraphicsScene,QtSvg.QgraphicsSvgItem。 因为QsvgRenderer支持动画SVG-Drawings,所以我在SVG文件中集成了一些动画元素,例如:
<circle cx="x" cy="x" r="z" class="style">
<animate attributeName="r" attributeType="XML"
from="0"
to="z"
begin="0s"
dur="2s"
fill="remove"
restart="always"
repeatCount="indefinite"
end="indefinite"
/>
</circle>
在Firefox中,圆圈按预期运行,在QgraphicsView中,他没有动画。
所以我尝试了#animateTransform&#39;:
<circle cx="x" cy="x" r="z" class="style">
<animateTransform attributeName="transform" type="translate"
begin="0"
dur="2s"
from="x y" to="0 0"
...
additive="sum"
/>
<animateTransform attributeName="transform" type="scale"
begin="0"
dur="2s"
from="0" to="1"
…
additive="sum"
/>
</circle>
它适用于QgraphicsView以及Firefox。我的问题已经解决了,但我想了解它。谁可以解释这种行为?
补充: QSvgRenderer.animated()在第一种情况下返回FALSE,在第二种情况下返回TRUE。
编辑于2014年5月1日: 首先我在Linux(Ubuntu 13.10)上使用了Python 3.3,Qt 4.8和PyQt 4.10.4,升级到Ubuntu 14.04之后,我尝试了Python 3.4,Qt 5.2.1和PyQt 5.2.1(因为从Qt 4.8到5.2的变化是在必要的应用程序代码中进行了几处修改,但在svg文件的xml代码中却没有,QgraphicsView的行为在两个版本中都是相同的。