Как улучшить частоту кадров в QSvgWidget? - PullRequest
0 голосов
/ 10 июня 2019

Используя 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_())
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...