このページでは、Brythonの外部スクリプトファイルを読み込んで実行している。ページのロード後にその時の日時が表示され、下のボタンを押すたびに現在時刻が1秒間隔で表示され、またそれが停止する。
このページのHTML部分は以下の通りで、ボタンと表示部、スクリプト読み込みが主要部分。
1 2 3 4 5 6 7 8 |
・・・・・ <input id="start-stop" type="button" value="Start/Stop" /> <div id="show-area" style="font-size: 2em;"></div> ・・・・・ <p style="font-size: 2em;"><script type="text/python" src="../brython/datetime.py"></script></p> |
外部スクリプトの内容は以下の通り。global変数は使わず、timerを保持・表示するクラスを関数の引数に渡している。
また、timer.set_interval()
の引数に関数を渡す際、インスタンスメソッドを渡すこともできる。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 |
from browser import document from datetime import datetime from browser import timer class DateTimeObject: def __init__(self): self.timer = None def show(): date_string = datetime.now().strftime('%Y/%m/%d %H:%M:%S') document["show-area"].html = date_string def switch(datetime_obj): if datetime_obj.timer is None: datetime_obj.timer = timer.set_interval(datetime_obj.show, 1000) else: timer.clear_interval(datetime_obj.timer) datetime_obj.timer = None datetime_obj = DateTimeObject() datetime_obj.show() document["start-stop"].bind("click", lambda: switch(datetime_obj)) |
Brythonでのタイマの使い方についてはこちらを参照。