tkinterで年間カレンダーを表示しよう
今回はtkinterを使って、年間カレンダーを表示するプログラムを作りましょう。
西暦を入力して実行ボタンを押すと、その年のカレンダーを表示します。
tkinterで年間カレンダーを表示するプログラム
tkinterで年間カレンダーを表示するプログラムは、以下の通りです。
EntryウィジェットとButtonウィジェットを配置するフレームと、カレンダーを表示するTextウィジェットを配置するフレームを作成します。
フレームを分ける理由は、ボタンが押されるたびにTextウィジェットを削除して、カレンダーを再表示するためです。
ウィジェットを削除する方法は、winfo_children()メソッドを使ってフレームの子ウィジェットを検索し、子ウィジェットが存在すればdestroy()メソッドを使って削除します。
winfo_children()メソッドとdestroy()メソッドの使い方は、以下のドキュメントを参照してください。
カレンダーを表示するフォントには、等幅フォントを指定しないとカレンダーの形が崩れてしまいますので、フォントの選択には注意が必要です。
サンプルではMSゴシックを使用しています。
入力する年はdatetime.date.today()を使って、現在の年をデフォルトで設定しています。
なお、カレンダーの表示方法は、こちらの記事を参照してください。
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 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 |
### インポート import datetime import calendar import tkinter ### 関数 def func(): ### 週の始まりを日曜日に設定 calendar.setfirstweekday(6) ### 該当年のカレンダーを取得 cal = calendar.calendar(value.get()) ### ウィジェット初期化 for widget in frame2.winfo_children(): widget.destroy() ### メッセージにカレンダーを設定 message = tkinter.Message(master=frame2, text=cal, font=("MS ゴシック",10)) ### カレンダー表示 message.pack() ### メイン画面作成 main = tkinter.Tk() ### 画面サイズ設定 main.geometry("600x600") ### Tkinter変数 value = tkinter.IntVar() ### 年初期値設定 value.set(datetime.date.today().year) ### フレーム設定 frame1 = tkinter.Frame(master=main) frame2 = tkinter.Frame(master=main) ### フレーム表示 frame1.pack(pady=20, side="top") frame2.pack(pady=20) ### 入力フィールド作成 entry = tkinter.Entry(master=frame1, textvariable=value, font=(None,16), width=5) ### ボタン作成 button = tkinter.Button(master=frame1, text="カレンダー表示", font=(None,12), command=func) ### 入力フィールド表示 entry.pack(side="left") ### ボタン表示 button.pack(side="left") ### イベントループ main.mainloop() |
入力フィールドに西暦を入力してカレンダー表示ボタンを押下すると、以下のように指定した年のカレンダーが表示されます。