Pythonば使って祝日が表示されるカレンダーば作成
Pythonば使って祝日が表示されるカレンダーば作成することはできるっちゃけど。Pythonには、カレンダー操作ば簡単にするためのライブラリがあって、「calendar」や「holidays」ライブラリば使うと、祝日が表示されるカレンダーば生成できるっちゃん。
ここでは、日本の祝日ば表示するために「jpholiday」ライブラリば使うとるけんね。
まず、必要なライブラリばインストールせんといかん。
pip install jpholiday
次に、以下のPythonコードば実行して祝日が表示されるカレンダーば生成するっちゃ。
import calendar
import jpholiday
from datetime import datetime
def print_calendar_with_holidays(year, month):
# カレンダーば作成
cal = calendar.TextCalendar(calendar.SUNDAY)
month_calendar = cal.monthdayscalendar(year, month)
# ヘッダーば表示
print(cal.formatmonthname(year, month, 10, 0))
print('日 月 火 水 木 金 土')
for week in month_calendar:
week_str = ''
for day in week:
if day == 0:
week_str += ' ' # 日がない場所は空白にするっちゃん
else:
# 祝日かどうか確認するばい
date = datetime(year, month, day)
if jpholiday.is_holiday(date):
week_str += f'\033[91m{day:2}\033[0m ' # 祝日は赤色にするっちゃ
else:
week_str += f'{day:2} '
print(week_str)
# 2024年6月のカレンダーば表示
print_calendar_with_holidays(2024, 6)
このコードの説明は以下の通りばい:
calendar.TextCalendar
ば使って指定された年と月のカレンダーば作成するっちゃん。- 各週の日付ばループして表示するっちゃん。
jpholiday.is_holiday(date)
ば使って、その日が祝日かどうか確認するばい。- 祝日の場合、日付ば赤色で表示するっちゃ(端末によっては赤色表示がサポートされてない場合もあるけんね)。
これば実行すると、指定された月のカレンダーが表示されて、祝日は赤色で表示されるっちゃん。例えば、2024年6月の場合、以下のように表示されるばい:
June 2024
日 月 火 水 木 金 土
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
祝日がある場合は、該当する日付が赤色で表示されるっちゃん。実際の祝日は、「jpholiday」ライブラリが日本の祝日ば正確に判定して表示するっちゃんね。
ガジェットとして作成
もちろん、祝日が表示されるカレンダーばガジェットとして作成することもできるばい。PythonとGUIライブラリば使って、デスクトップ上で動作するカレンダーガジェットば作成できるっちゃん。ここでは、tkinterライブラリば使ってシンプルなGUIカレンダーガジェットば作成する例ば示すけん。
import tkinter as tk
from tkinter import ttk
import calendar
import jpholiday
from datetime import datetime
class HolidayCalendar(tk.Tk):
def __init__(self):
super().__init__()
self.title("祝日カレンダー")
self.geometry("300x300")
self.year = datetime.now().year
self.month = datetime.now().month
self.create_widgets()
self.show_calendar(self.year, self.month)
def create_widgets(self):
self.header = ttk.Label(self, text="", font=("Helvetica", 16))
self.header.pack(pady=10)
self.calendar_frame = ttk.Frame(self)
self.calendar_frame.pack()
self.prev_button = ttk.Button(self, text="前の月", command=self.prev_month)
self.prev_button.pack(side="left", padx=10, pady=10)
self.next_button = ttk.Button(self, text="次の月", command=self.next_month)
self.next_button.pack(side="right", padx=10, pady=10)
def show_calendar(self, year, month):
for widget in self.calendar_frame.winfo_children():
widget.destroy()
self.header.config(text=f"{year}年 {month}月")
cal = calendar.TextCalendar(calendar.SUNDAY)
month_calendar = cal.monthdayscalendar(year, month)
days = ['日', '月', '火', '水', '木', '金', '土']
for day in days:
ttk.Label(self.calendar_frame, text=day).grid(row=0, column=days.index(day))
for row, week in enumerate(month_calendar, 1):
for col, day in enumerate(week):
if day == 0:
ttk.Label(self.calendar_frame, text="").grid(row=row, column=col)
else:
date = datetime(year, month, day)
if jpholiday.is_holiday(date):
ttk.Label(self.calendar_frame, text=str(day), foreground="red").grid(row=row, column=col)
else:
ttk.Label(self.calendar_frame, text=str(day)).grid(row=row, column=col)
def prev_month(self):
self.month -= 1
if self.month == 0:
self.month = 12
self.year -= 1
self.show_calendar(self.year, self.month)
def next_month(self):
self.month += 1
if self.month == 13:
self.month = 1
self.year += 1
self.show_calendar(self.year, self.month)
if __name__ == "__main__":
app = HolidayCalendar()
app.mainloop()
説明
HolidayCalendar
クラス:tk.Tk
ば継承して、カレンダーガジェットのウィンドウば作成するばい。- 今の年月ば取得して、カレンダーば表示するっちゃん。
create_widgets
メソッド:- ヘッダー、カレンダー表示フレーム、前の月と次の月に移動するボタンば作成するばい。
show_calendar
メソッド:- 指定された年と月のカレンダーば表示するっちゃん。
- 祝日は赤色で表示するばい。
prev_month
メソッド:- 前の月に移動する機能ば実装するっちゃん。
next_month
メソッド:- 次の月に移動する機能ば実装するばい。
このコードば実行すると、デスクトップに祝日が表示されるカレンダーガジェットが表示されるけん。ユーザーはボタンば使って月ば移動できるっちゃん。祝日は赤色で表示されるようになっとるけんね。
素晴らしい?!?!
tkinter以外の「simpleなにがし」tkinterは難しいのでないか
pythonは書けるが、mq4は書くことが出来ない。禁止されている。
どこらへんまで禁止されているのか