机の上を整理したくダッシュボードを作ります。

概要

デジタルダッシュボード作成 第三弾。 今回は時計の表示と実際に借りのダッシュボードに表示させてみます。

この記事はそのメモやまとめです。 すでに設定済みの項目がいくつかある。 試行錯誤しながらやったので、手順として不要かもしれない。あくまでメモ用。

実装したい内容とか整理

ここでは ・現在時刻(表示 大) ・日付(表示 小) の表示を目指します。

作ってみる

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()

実行するとこんな感じのウィンドウが表示されます。 image.png

テストなんでウィンドウはめちゃくちゃでかいですが、表示位置や大きさなどはほとんどイメージ通りになりました。

次やりたいこと

  • 室温気温測定用コード
  • 天気予報とカレンダーをウィンドウに組み込む
  • ニュースは別に必要なかったので今後は取り込まない