年末まであと何日?を教えてくれるアプリ
サイザーの勉強をしているのであるが、奥が深いのでまだまだ使いこなせない。www.harukaze.netを見ていたのであるが、その勢いで初アプリケーションを作ってみた(アプリというほど完成度は高くないのだが)。
2つ日付を入力してボタンを押すと、日時の差を求めるものです。例えば、今日の日付と大晦日の日付を入れ、"Calculate!"ボタンを押すと145daysと表示されます(写真が実行画面)。以下、ソース(TimeFlies.py)。
""" simple application for calculating remaining days """ import wx import datetime class MyApp(wx.PySimpleApp): def OnInit(self): Frm = wx.Frame(None, -1, "Time flies.", size=(550,120)) Frm.SetBackgroundColour("green") StTxtF = wx.StaticText(Frm, -1, "From:") StTxtT = wx.StaticText(Frm, -1, "To: ") StTxtY1 = wx.StaticText(Frm, -1, "Year") StTxtM1 = wx.StaticText(Frm, -1, "Month") StTxtD1 = wx.StaticText(Frm, -1, "Day") StTxtY2 = wx.StaticText(Frm, -1, "Year") StTxtM2 = wx.StaticText(Frm, -1, "Month") StTxtD2 = wx.StaticText(Frm, -1, "Day") self.TxtCtrY1 = wx.TextCtrl(Frm, -1, "2007") self.TxtCtrM1 = wx.TextCtrl(Frm, -1, "01") self.TxtCtrD1 = wx.TextCtrl(Frm, -1, "01") self.TxtCtrY2 = wx.TextCtrl(Frm, -1, "2007") self.TxtCtrM2 = wx.TextCtrl(Frm, -1, "01") self.TxtCtrD2 = wx.TextCtrl(Frm, -1, "01") Btn1 = wx.Button(Frm, -1, "Calculate!") StTxt2 = wx.StaticText(Frm, -1, "===>") self.StTxt4 = wx.StaticText(Frm, -1, "00") StTxt3 = wx.StaticText(Frm, -1, " remain ...") FGSz = wx.FlexGridSizer(3,7) FGSz.Add(StTxtF, 0, wx.FIXED_MINSIZE) FGSz.Add(StTxtY1, 0, wx.FIXED_MINSIZE) FGSz.Add(self.TxtCtrY1, 0, wx.FIXED_MINSIZE) FGSz.Add(StTxtM1, 0, wx.FIXED_MINSIZE) FGSz.Add(self.TxtCtrM1, 0, wx.FIXED_MINSIZE) FGSz.Add(StTxtD1, 0, wx.FIXED_MINSIZE) FGSz.Add(self.TxtCtrD1, 0, wx.FIXED_MINSIZE) FGSz.Add(StTxtT, 1, wx.FIXED_MINSIZE) FGSz.Add(StTxtY2, 1, wx.FIXED_MINSIZE) FGSz.Add(self.TxtCtrY2, 1, wx.FIXED_MINSIZE) FGSz.Add(StTxtM2, 1, wx.FIXED_MINSIZE) FGSz.Add(self.TxtCtrM2, 1, wx.FIXED_MINSIZE) FGSz.Add(StTxtD2, 1, wx.FIXED_MINSIZE) FGSz.Add(self.TxtCtrD2, 1, wx.FIXED_MINSIZE) FGSz.Add(Btn1, 2, wx.FIXED_MINSIZE) FGSz.Add(StTxt2, 2, wx.FIXED_MINSIZE) FGSz.Add(self.StTxt4, 2, wx.FIXED_MINSIZE) FGSz.Add(StTxt3, 2, wx.FIXED_MINSIZE) Frm.SetSizer(FGSz) Btn1.Bind(wx.EVT_BUTTON, self.OnButton) Frm.Show() return 1 def OnButton(self, event): y1 = int(self.TxtCtrY1.GetValue()) m1 = int(self.TxtCtrM1.GetValue()) d1 = int(self.TxtCtrD1.GetValue()) y2 = int(self.TxtCtrY2.GetValue()) m2 = int(self.TxtCtrM2.GetValue()) d2 = int(self.TxtCtrD2.GetValue()) days1 = datetime.date(y1,m1,d1) days2 = datetime.date(y2,m2,d2) print days1, days2 self.StTxt4.SetLabel(str(days2-days1)) app = MyApp() app.MainLoop()
もう少しきれいに配置できるようにするのが、とりあえずの目標。サイザーの勉強を続けることにする。見れば見るほど単純なコードではあるが、記念すべき初アプリには変わりない。