mirror of
https://github.com/pyscript/pyscript.git
synced 2025-12-19 18:27:29 -05:00
* [pre-commit.ci] pre-commit autoupdate updates: - [github.com/psf/black: 22.12.0 → 23.1.0](https://github.com/psf/black/compare/22.12.0...23.1.0) * [pre-commit.ci] auto fixes from pre-commit.com hooks for more information, see https://pre-commit.ci --------- Co-authored-by: pre-commit-ci[bot] <66853113+pre-commit-ci[bot]@users.noreply.github.com>
45 lines
1.3 KiB
Python
45 lines
1.3 KiB
Python
import random
|
|
|
|
from js import DOMParser, document, setInterval
|
|
from pyodide.ffi import create_proxy
|
|
from pyodide.http import open_url
|
|
|
|
|
|
class Antigravity:
|
|
url = "./antigravity.svg"
|
|
|
|
def __init__(self, target=None, interval=10, append=True, fly=False):
|
|
self.target = (
|
|
document.getElementById(target)
|
|
if isinstance(target, str)
|
|
else document.body
|
|
)
|
|
doc = DOMParser.new().parseFromString(
|
|
open_url(self.url).read(), "image/svg+xml"
|
|
)
|
|
self.node = doc.documentElement
|
|
if append:
|
|
self.target.append(self.node)
|
|
else:
|
|
self.target.replaceChildren(self.node)
|
|
self.xoffset, self.yoffset = 0, 0
|
|
self.interval = interval
|
|
if fly:
|
|
self.fly()
|
|
|
|
def fly(self):
|
|
setInterval(create_proxy(self.move), self.interval)
|
|
|
|
def move(self):
|
|
char = self.node.getElementsByTagName("g")[1]
|
|
char.setAttribute("transform", f"translate({self.xoffset}, {-self.yoffset})")
|
|
self.xoffset += random.normalvariate(0, 1) / 20
|
|
if self.yoffset < 50:
|
|
self.yoffset += 0.1
|
|
else:
|
|
self.yoffset += random.normalvariate(0, 1) / 20
|
|
|
|
|
|
_auto = Antigravity(append=True)
|
|
fly = _auto.fly
|