時刻を動的に表示
PyScriptを使って、時刻を動的に表示してみます。
サンプルコード
動的な表示をするためにはまずimport asyncio
と宣言しasyncioライブラリをインポートしておきます。
次に動的に動かしたい関数(今回はfoo関数)にasync
という修飾子をつけます。
foo関数内では、繰り返したい処理をwhile True
配下に記載します。
今回は、時刻を取得しそれをoutputDiv2
とoutputDiv3
に反映しています。
またawait asyncio.sleep(1)
を使って、1秒待ってから実行するようにしています。
[ソースコード]
clock.html1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38
| <html> <head> <link rel="stylesheet" href="https://pyscript.net/latest/pyscript.css" /> <script defer src="https://pyscript.net/latest/pyscript.js"></script> </head>
<body>
<div class="font-mono">start time: <label id="outputDiv"></label></div> <div id="outputDiv2" class="font-mono"></div> <div id="outputDiv3" class="font-mono"></div>
<py-script> import asyncio from datetime import datetime as dt
def format_date(dt_, fmt="%m/%d/%Y, %H:%M:%S"): return f"{dt_:{fmt}}"
def now(fmt="%m/%d/%Y, %H:%M:%S"): return format_date(dt.now(), fmt)
async def foo(): while True: await asyncio.sleep(1) output = now() Element("outputDiv2").write(output)
out3 = Element("outputDiv3") if output[-1] in ["0", "4", "8"]: out3.write("It's espresso time!") else: out3.clear()
pyscript.run_until_complete(foo()) </py-script> </body> </html>
|
[ブラウザ表示]
ブラウザ上に時刻が1秒ごとに更新される(動的に表示される)ことを確認できました。