生まれた日から今日までの日数をpythonで。
jskny氏が書いた生まれた日から今日まで、何日生きているのかを求める2という記事に便乗してみた。 便乗してみたっていうか、ズルして短く書こうと思ったら言うほど短くならなかったお話。 使用したのはpython3と、標準でくっついてくるtkinter。
実行するとこんな感じ。 tkinterらしい武骨さっすね。
ソースコードはこんな。
import datetime
import tkinter
def onChange(e):
if not (year.get() or month.get() or day.get()):
livedays.configure(text='calc lived days.')
return
try:
delta = datetime.datetime.now() - datetime.datetime(int(year.get()), int(month.get()), int(day.get()))
except ValueError:
livedays.configure(text='正しい日付を入れてください。')
else:
livedays.configure(text='あなたは今日まで{0}日生きています。'.format(delta.days))
root = tkinter.Tk()
livedays = tkinter.Label(text='calc lived days.', font=('*', 36))
livedays.pack()
inputday = tkinter.Frame()
inputday.pack()
year = tkinter.Entry(inputday)
year.pack(side='left')
tkinter.Label(inputday, text='年').pack(side='left')
month = tkinter.Entry(inputday)
month.pack(side='left')
tkinter.Label(inputday, text='月').pack(side='left')
day = tkinter.Entry(inputday)
day.pack(side='left')
tkinter.Label(inputday, text='日').pack(side='left')
year.bind('<KeyRelease>', onChange)
month.bind('<KeyRelease>', onChange)
day.bind('<KeyRelease>', onChange)
root.mainloop()
長い。GUIまわりがすごく長い。
実際に日数を計算するのは
datetime.datetime.now() - datetime.datetime(2014, 4, 1)
とかだけで済むのだけれどね。 datetime同士を引き算すると出てくるtimedeltaってやつは結構便利なのでおすすめ。
ほら、python簡単でしょ? って言おうかと思って書き始めたのだけれど、tkinterの面倒くささが露呈しただけな気がする。 GUIに関してはC#に完敗だよなぁ・・・C#やろうかなぁ・・・orz