tkinterでデジタル時計を作ろう
今回はtkinterでデジタル時計を作ってみましょう。
tkinterでデジタル時計を作るために、現在時刻を取得する部分を別スレッドにします。
スレッドが使えるようにインポートする
まず、スレッドが使えるようにインポートします。
import threading
スレッドオブジェクトを作成する
スレッドオブジェクトを作成します。
オブジェクト名 = threading.Thread(オプション)
スレッドで使うオプション
スレッドで使う主なオプションは、以下の通りです。
オプション名 | 内容 |
target | 呼び出し可能オブジェクト。関数を指定できます |
name | スレッドの名前 |
args | targetを呼び出す時の引数 |
kwargs | targetを呼び出す時のキーワード引数の辞書 |
daemon | スレッドをデーモンにするかどうか。TrueまたはFalseを使用可能 |
スレッドを開始する
スレッドを開始するには、start()メソッドを使います。
オブジェクト名.start()
tkinterでデジタル時計を表示するプログラム
tkinterでデジタル時計を表示するプログラムは、以下の通りです。
取得した時刻をフォーマットして、一秒ごとにキャンバスをクリアしながら表示させます。
1 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 39 40 41 |
### インポート import datetime import time import tkinter import threading ### 時刻取得関数 def get_time(): ### 無限ループ while True: ### 現在時刻取得 now = datetime.datetime.now() ### 時刻設定 tm = "{:02}:{:02}:{:02}".format(now.hour, now.minute, now.second) ### キャンバス初期化 canvas.delete("all") ### キャンバスに時刻表示 canvas.create_text(100, 50, text=tm, font=(None,36)) #### 待ち時間 time.sleep(1) ### キャンバス作成 canvas = tkinter.Canvas(master=None, width=200, height=100) ### キャンバス表示 canvas.pack() ### スレッド作成 thread = threading.Thread(target=get_time, daemon=True) ### スレッド開始 thread.start() ### イベントループ canvas.mainloop() |
プログラムを実行すると、以下のようなデジタル時計が表示されます。