tkinter で 年月を入力して12日を含む週の金曜日が何日かを表示します。
- 参考記事
実際に書いたコード
# 年月を入力して12日を含む週の金曜日が何日かを表示する
import tkinter as tk
from datetime import datetime
def show_day():
year = year_entry.get()
month = month_entry.get()
day = "12"
# 入力が数字がどうかチェック
if not (year.isdigit() and month.isdigit() and day.isdigit()):
result_label.config(text="数字を入力してください")
return
try:
y = int(year)
m = int(month)
d = int(day)
dt = datetime(y, m, d)
except ValueError:
result_label.config(text="存在しない年月です")
return
# 12日を含む週の金曜日が何日かを計算
weekday_sunday0 = (dt.weekday() + 1) % 7 # 日曜日=0 に変換
friday = d + 5 - weekday_sunday0
result_label.config(text=f"{friday}日")
# --- GUI構築 ---
root = tk.Tk()
root.title("12日を含む週の金曜日が何日かを表示")
root.geometry("600x200")
tk.Label(root, text="年").pack()
year_entry = tk.Entry(root)
year_entry.pack()
tk.Label(root, text="月").pack()
month_entry = tk.Entry(root)
month_entry.pack()
tk.Button(root, text="12日を含む週の金曜日が何日かを表示", command=show_day).pack()
result_label = tk.Label(root, text="")
result_label.pack()
root.mainloop()
解説
weekday_sunday0 = (dt.weekday() + 1) % 7 # 日曜日=0 に変換
dt.weekday() は 月曜=0〜日曜=6 の番号を返します。
「週の基準を日曜=0」にしたいので、 +1 して 7 で割った余りにすることで 日曜=0, 月曜=1, …, 土曜=6 に変換します。
friday = d + 5 - weekday_sunday0
「日曜=0」を基準にすると、 金曜は週の 5 番目(日曜0 → 金曜5)
実行結果
Auto Py to Exe で、Windowsのexeアプリ化して、実行。


