LoginSignup
1
0

Python Tkinterとラズパイで自分専用のダッシュボードアプリを作ってみる #3 時計を表示させる

Posted at

概要

デジタルダッシュボード作成 第三弾。

の続きです。
今回は時計の表示と実際に借りのダッシュボードに表示させてみます。

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

実装したい内容とか整理

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

作ってみる

の記事とchatgptを参考にしつつ、自分で必要な情報へと少し変更を加えます。
以下のようになりました。

clock.py
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] ❯ 

ダッシュボード化

ある程度形が見えてきたので実際にダッシュボードにしていきます。

を参考にしました。

main.py
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

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

次やりたいこと

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

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
0