受講生(S氏)からのお題をやってみよう。今回はtkinterを使ったGUIを伴ったアプリ制作だ。
完成イメージ
自分の誕生日を入力すると今日の運勢を占ってくれるアプリだ。
仕様
上の画像のように誕生日を入力して占うボタンを押すと
入力者の星座とその日の運勢が表示されるプログラムを作ってください。
運勢は4段階。
運勢の決定は、誕生日を数字化したもの(例えば1月7日なら107)と
現在の日付を同じく数字化したもの(2月14日に占った場合は214)を
合計した値を4で割ったときの余り((107+214)%4)によって行われるようにしてください。
ただし、現在の日付が入力者の星座が含まれる期間だった場合は、
上記のロジックよりも1段階上の運勢が表示されるようにしてください。
例えば占った日が2月14日の場合はみずがめ座の期間なので
みずがめ座の人は本来は凶の場合でも小吉にランクアップ。大吉はそのまま大吉という具合です。
なお、現在の日付の取得は下記のようにdatetimeモジュールを用いて行えます。
import datetime
today=datetime.date.today().strftime(“%m%d”)
このようにすると2月14日の場合は「0214」という文字列が取得されます。
作成
レイアウトの作成
ではさっそく作っていこう。レイアウトの方法はpack,grid,placeなどがあるが今回はgridを使ってみよう。以下のようにfortune.pyを作成しレイアウトを確認する。
import tkinter as tk
import datetime
data=[
['おひつじ座',3,21],
['おうし座',4,20],
['ふたご座',5,21],
['かに座',6,22],
['しし座',7,23],
['おとめ座',8,23],
['てんびん座',9,23],
['さそり座',10,24],
['いて座',11,23],
['やぎ座',12,22],
['みずがめ座',1,20],
['うお座',2,19],
]
def btn_click():
pass
root=tk.Tk()
root.geometry('270x280')
root['bg']='pink'
label=tk.Label(text='今日の運勢占い',font=('Arial',30),bg='pink',foreground='white')
label.grid(row=0,column=0,columnspan=5,padx=20,pady=20)
label1=tk.Label(text='誕生日:',font=('Arial',16),bg='pink')
label1.grid(row=1,column=0)
e1=tk.Entry(width=2)
e1.grid(row=1,column=1)
label2=tk.Label(text='月',font=('Arial',16),bg='pink')
label2.grid(row=1,column=2)
e2=tk.Entry(width=2)
e2.grid(row=1,column=3)
label3=tk.Label(text='日',font=('Arial',16),bg='pink')
label3.grid(row=1,column=4)
btn=tk.Button(text='占う',font=('Arial',16),command=btn_click)
btn.grid(row=2,column=0,columnspan=5,pady=20)
label4=tk.Label(text='',font=('Arial',16),bg='pink')
label4.grid(row=3,column=0,columnspan=5)
label5=tk.Label(text='',font=('Arial',16),bg='pink')
label5.grid(row=4,column=0,columnspan=5)
root.mainloop()
Let’s challenge!
下準備はできた。ここから先はあなた自身で作成してみてもらいたい。
なお、星座の配列は3月21日~4月19日までがおひつじ座ということを表す。
今def btn_click():の中身がpassになっているがここをメインに記述していくことになるであろう。場合によっては他にも関数を作成したほうが楽に作成できるかもしれない。
自分の星座と今日の星座が一致すると運勢が上がったりなどなにげに処理が多いのでコーディング力が試されるお題だ。
コメント