生まれた日から今日までの日数を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