Используя QSvgWidget, я успешно запустил код SVG из примера из Codepen.В браузере анимация очень плавная, например, 60 кадров в секунду.В виджете это намного медленнее (на той же машине).Установка fps с setFramesPerSecond на рендере не помогает.Он изменяет значение framesPerSecond, но не ускоряет анимацию.Кажется, что учитывается только один параметр - это продолжительность анимации, но это не то же самое, что установка частоты кадров.
Есть ли что-то еще, что можно сделать для увеличения FPS?
Рабочий код ниже:
import sys
from PyQt5.QtWidgets import QApplication
from PyQt5.QtSvg import QSvgWidget, QSvgRenderer
svg_str = """
<svg viewBox="0 0 160 160" width="160" height="160">
<circle cx="80" cy="80" r="50" />
<g transform=" matrix(0.866, -0.5, 0.25, 0.433, 80, 80)">
<path d="M 0,70 A 65,70 0 0,0 65,0 5,5 0 0,1 75,0 75,70 0 0,1 0,70Z" fill="#FFF">
<animateTransform attributeName="transform" type="rotate" from="360 0 0" to="0 0 0" dur="1s" repeatCount="indefinite" />
</path>
</g>
<path d="M 50,0 A 50,50 0 0,0 -50,0Z" transform="matrix(0.866, -0.5, 0.5, 0.866, 80, 80)" />
</svg>
"""
svg_bytes = bytearray(svg_str, encoding='utf-8')
app = QApplication(sys.argv)
svgWidget = QSvgWidget()
svgWidget.renderer().load(svg_bytes)
svgWidget.setGeometry(500,500,1000,1000)
svgWidget.show()
print(svgWidget.renderer().framesPerSecond())
print(svgWidget.renderer().isValid())
print(svgWidget.renderer().animated())
sys.exit(app.exec_())