Python Tkinterとラズパイで自分専用のダッシュボードアプリを作ってみる #3 時計を表示させる
机の上を整理したくダッシュボードを作ります。
概要
デジタルダッシュボード作成 第三弾。 今回は時計の表示と実際に借りのダッシュボードに表示させてみます。
この記事はそのメモやまとめです。 すでに設定済みの項目がいくつかある。 試行錯誤しながらやったので、手順として不要かもしれない。あくまでメモ用。
実装したい内容とか整理
ここでは ・現在時刻(表示 大) ・日付(表示 小) の表示を目指します。
作ってみる
https://atmarkit.itmedia.co.jp/ait/articles/2111/09/news015.html
の記事とchatgptを参考にしつつ、自分で必要な情報へと少し変更を加えます。 以下のようになりました。
import datetime
t_delta = datetime.timedelta(hours=9)
JST = datetime.timezone(t_delta, 'JST')
now = datetime.datetime.now(JST)
d_week = {'Sun': '日', 'Mon': '月', 'Tue': '火', 'Wed': '水',
'Thu': '木', 'Fri': '金', 'Sat': '土'}
key = now.strftime('%a')
w = d_week[key]
d = now.strftime('%Y年%m月%d日') + f'({w})' #f'{now:%Y年%m月%d日}({w})'
print(d) # 2021年11月04日(木)
t = now.time().strftime('%X')
print(t) # 17:37:28
上記を実行すると以下のような結果を得ることが
RaspberryPi_Dashboard on master [🌚] via 🐍 v3.11.0 took 31s
at 22:53:15 ⬢ [Docker] ❯ python clock.py
2024年05月12日(日)
22:55:44
RaspberryPi_Dashboard on master [🌚] via 🐍 v3.11.0
at 22:55:44 ⬢ [Docker] ❯
ダッシュボード化
ある程度形が見えてきたので実際にダッシュボードにしていきます。
https://www.shido.info/py/tkinter2.html
を参考にしました。
import tkinter as tk
from tkinter import ttk
import datetime
# メインウィンドウを作成
root = tk.Tk()
root.title("ダッシュボード")
root.geometry("1920x1080")
# 時計を定義
def update_clock():
t_delta = datetime.timedelta(hours=9)
JST = datetime.timezone(t_delta, 'JST')
now = datetime.datetime.now(JST)
d_week = {'Sun': '日', 'Mon': '月', 'Tue': '火', 'Wed': '水',
'Thu': '木', 'Fri': '金', 'Sat': '土'}
key = now.strftime('%a')
w = d_week[key]
day = now.strftime('%Y年%m月%d日') + f'({w})' #f'{now:%Y年%m月%d日}({w})'
# print(d) # 2021年11月04日(木)
time = now.time().strftime('%X')
# print(t) # 17:37:28
clock_label.config(text=time)
day_label.config(text=day)
root.after(1000, update_clock)
# 時計ラベルの設定
clock_label = ttk.Label(root, font=('Arial', 48), justify='center')
clock_label.pack(padx=10, pady=(10, 0), anchor=tk.W) # 上に余白を設定
# 日付ラベルの設定
day_label = ttk.Label(root, font=('Arial', 24), justify='center')
day_label.pack(padx=10, pady=(5, 10), anchor=tk.W) # 上下に余白を設定
update_clock()
root.mainloop()
実行するとこんな感じのウィンドウが表示されます。
テストなんでウィンドウはめちゃくちゃでかいですが、表示位置や大きさなどはほとんどイメージ通りになりました。
次やりたいこと
- 室温気温測定用コード
- 天気予報とカレンダーをウィンドウに組み込む
- ニュースは別に必要なかったので今後は取り込まない