質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.48%
Visual Studio

Microsoft Visual StudioはMicrosoftによる統合開発環境(IDE)です。多種多様なプログラミング言語に対応しています。

Python 3.x

Python 3はPythonプログラミング言語の最新バージョンであり、2008年12月3日にリリースされました。

Tkinter

Tkinterは、GUIツールキットである“Tk”をPythonから利用できるようにした標準ライブラリである。

Q&A

0回答

1847閲覧

python Tkinter  について

ChaCha_MaRu

総合スコア15

Visual Studio

Microsoft Visual StudioはMicrosoftによる統合開発環境(IDE)です。多種多様なプログラミング言語に対応しています。

Python 3.x

Python 3はPythonプログラミング言語の最新バージョンであり、2008年12月3日にリリースされました。

Tkinter

Tkinterは、GUIツールキットである“Tk”をPythonから利用できるようにした標準ライブラリである。

0グッド

0クリップ

投稿2018/12/30 01:42

編集2018/12/31 02:58

PythonのTkinterについて質問です。

Python3.6

1 2# -*- coding:utf-8 -*- 3 4import tkinter as tk 5 6# カレンダーを作成するフレームクラス 7class mycalendar(tk.Frame): 8 def __init__(self,master=None,cnf={},**kw): 9 "初期化メソッド" 10 import datetime 11 tk.Frame.__init__(self,master,cnf,**kw) 12 13 #予定の追加ボタンが押された時の反応 14 def tsuika(): 15 root.destroy() 16 selectgui() 17 18 # 現在の日付を取得 19 now = datetime.datetime.now() 20 # 現在の年と月を属性に追加 21 self.year = now.year 22 self.month = now.month 23 24 #予定の追加ボタンの作成 25 btn=tk.Button(text="予定の追加",width=20,command=tsuika) 26 btn.place(x=750,y=850) 27 28 29 30 31 # frame_top部分の作成 32 frame_top = tk.Frame(self) 33 frame_top.pack(pady=5) 34 self.previous_month = tk.Label(frame_top, text = "<", font = ("",14)) 35 self.previous_month.bind("<1>",self.change_month) 36 self.previous_month.pack(side = "left", padx = 10) 37 self.current_year = tk.Label(frame_top, text = self.year, font = ("",18)) 38 self.current_year.pack(side = "left") 39 self.current_month = tk.Label(frame_top, text = self.month, font = ("",18)) 40 self.current_month.pack(side = "left") 41 self.next_month = tk.Label(frame_top, text = ">", font = ("",14)) 42 self.next_month.bind("<1>",self.change_month) 43 self.next_month.pack(side = "left", padx = 10) 44 45 46 47 48 # frame_week部分の作成 49 frame_week = tk.Frame(self) 50 frame_week.pack() 51 button_mon = d_button(frame_week, text = "Mon") 52 button_mon.grid(column=0,row=0) 53 button_tue = d_button(frame_week, text = "Tue") 54 button_tue.grid(column=1,row=0) 55 button_wed = d_button(frame_week, text = "Wed") 56 button_wed.grid(column=2,row=0) 57 button_thu = d_button(frame_week, text = "Thu") 58 button_thu.grid(column=3,row=0) 59 button_fri = d_button(frame_week, text = "Fri") 60 button_fri.grid(column=4,row=0) 61 button_sta = d_button(frame_week, text = "Sat", fg = "blue") 62 button_sta.grid(column=5,row=0) 63 button_san = d_button(frame_week, text = "San", fg = "red") 64 button_san.grid(column=6,row=0) 65 66 # frame_calendar部分の作成 67 self.frame_calendar = tk.Frame(self) 68 self.frame_calendar.pack() 69 70 # 日付部分を作成するメソッドの呼び出し 71 self.create_calendar(self.year,self.month) 72 73 def create_calendar(self,year,month): 74 "指定した年(year),月(month)のカレンダーウィジェットを作成する" 75 76 # ボタンがある場合には削除する(初期化) 77 try: 78 for key,item in self.day.items(): 79 item.destroy() 80 except: 81 pass 82 83 # calendarモジュールのインスタンスを作成 84 import calendar 85 cal = calendar.Calendar() 86 # 指定した年月のカレンダーをリストで返す 87 days = cal.monthdayscalendar(year,month) 88 89 # 日付ボタンを格納する変数をdict型で作成 90 self.day = {} 91 # for文を用いて、日付ボタンを生成 92 for i in range(0,42): 93 c = i - (7 * int(i/7)) 94 r = int(i/7) 95 try: 96 # 日付が0でなかったら、ボタン作成 97 if days[r][c] != 0: 98 self.day[i] = d_button(self.frame_calendar,text = days[r][c]) 99 self.day[i].grid(column=c,row=r) 100 except: 101 """ 102 月によっては、i=41まで日付がないため、日付がないiのエラー回避が必要 103 """ 104 break 105 106 def change_month(self,event): 107 # 押されたラベルを判定し、月の計算 108 if event.widget["text"] == "<": 109 self.month -= 1 110 else: 111 self.month += 1 112 # 月が0、13になったときの処理 113 if self.month == 0: 114 self.year -= 1 115 self.month = 12 116 elif self.month == 13: 117 self.year +=1 118 self.month =1 119 # frame_topにある年と月のラベルを変更する 120 self.current_year["text"] = self.year 121 self.current_month["text"] = self.month 122 # 日付部分を作成するメソッドの呼び出し 123 self.create_calendar(self.year,self.month) 124 125 126 127 128# デフォルトのボタンクラス 129class d_button(tk.Button): 130 def __init__(self,master=None,cnf={},**kw): 131 tk.Button.__init__(self,master,cnf,**kw) 132 self.configure(font=("",14),height=2, width=4, relief="flat") 133 134 135 136 137# ルートフレームの定義 138root = tk.Tk() 139root.title("Calendar App") 140mycal = mycalendar(root) 141root.geometry("900x900") 142mycal.pack() 143root.mainloop()

上記のコードでカレンダーを表示し、下に予定の追加ボタンを配置するところまでいきました。

次に行いたいこととしては
・予定の追加画面へ移動する
・予定の追加画面で入力した情報をそれぞれの日付に割り当て、日付ボタンをクリックすると下へ表示させる
ということを実装したいです。
ご教授よろしくお願いします。

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

まだ回答がついていません

会員登録して回答してみよう

アカウントをお持ちの方は

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問