import wx class IdealBody(wx.Dialog): """Ideal Body Measurements Calculator""" def __init__(self, parent): # Create dialog box wx.Dialog.__init__(self, parent, title=_("Ideal Body Measurements")) # main sizer self.sizer = wx.BoxSizer(wx.VERTICAL) # controls sizer self.grid_sizer = wx.GridBagSizer(4,8) label = wx.StaticText(self, wx.ID_ANY, _("Wrist Size:")) self.grid_sizer.Add(label, (0,0), flag=wx.ALIGN_CENTER_VERTICAL | wx.ALIGN_RIGHT) self.wrist_box = wx.TextCtrl(self, wx.ID_ANY) self.grid_sizer.Add(self.wrist_box, (0,1), flag=wx.ALIGN_CENTER_VERTICAL) self.calc_button = wx.Button(self, wx.ID_ANY, _("Calculate")) self.grid_sizer.Add(self.calc_button, (0,2), flag=wx.EXPAND | wx.ALIGN_CENTER_VERTICAL) self.Bind(wx.EVT_BUTTON, self.on_calc, self.calc_button) label = wx.StaticText(self, wx.ID_ANY, _("Your ideal body measurements are:")) self.grid_sizer.Add(label, (1,0), (1,4), flag=wx.ALIGN_CENTER_VERTICAL) label = wx.StaticText(self, wx.ID_ANY, _("Chest Size:")) self.grid_sizer.Add(label, (2,0), flag=wx.ALIGN_CENTER_VERTICAL | wx.ALIGN_RIGHT) self.chest_box = wx.TextCtrl(self, wx.ID_ANY, style=wx.TE_READONLY) self.grid_sizer.Add(self.chest_box, (2,1), flag=wx.ALIGN_CENTER_VERTICAL) label = wx.StaticText(self, wx.ID_ANY, _("Waist Size:")) self.grid_sizer.Add(label, (3,0), flag=wx.ALIGN_CENTER_VERTICAL | wx.ALIGN_RIGHT) self.waist_box = wx.TextCtrl(self, wx.ID_ANY, style=wx.TE_READONLY) self.grid_sizer.Add(self.waist_box, (3,1), flag=wx.ALIGN_CENTER_VERTICAL) label = wx.StaticText(self, wx.ID_ANY, _("Hip Size:")) self.grid_sizer.Add(label, (4,0), flag=wx.ALIGN_CENTER_VERTICAL | wx.ALIGN_RIGHT) self.hips_box = wx.TextCtrl(self, wx.ID_ANY, style=wx.TE_READONLY) self.grid_sizer.Add(self.hips_box, (4,1), flag=wx.ALIGN_CENTER_VERTICAL) label = wx.StaticText(self, wx.ID_ANY, _("Bicep Size:")) self.grid_sizer.Add(label, (5,0), flag=wx.ALIGN_CENTER_VERTICAL | wx.ALIGN_RIGHT) self.arms_box = wx.TextCtrl(self, wx.ID_ANY, style=wx.TE_READONLY) self.grid_sizer.Add(self.arms_box, (5,1), flag=wx.ALIGN_CENTER_VERTICAL) label = wx.StaticText(self, wx.ID_ANY, _("Forearm Size:")) self.grid_sizer.Add(label, (2,2), flag=wx.ALIGN_CENTER_VERTICAL | wx.ALIGN_RIGHT) self.forearms_box = wx.TextCtrl(self, wx.ID_ANY, style=wx.TE_READONLY) self.grid_sizer.Add(self.forearms_box, (2,3), flag=wx.ALIGN_CENTER_VERTICAL) label = wx.StaticText(self, wx.ID_ANY, _("Thigh Size:")) self.grid_sizer.Add(label, (3,2), flag=wx.ALIGN_CENTER_VERTICAL | wx.ALIGN_RIGHT) self.thigh_box = wx.TextCtrl(self, wx.ID_ANY, style=wx.TE_READONLY) self.grid_sizer.Add(self.thigh_box, (3,3), flag=wx.ALIGN_CENTER_VERTICAL) label = wx.StaticText(self, wx.ID_ANY, _("Calve Size:")) self.grid_sizer.Add(label, (4,2), flag=wx.ALIGN_CENTER_VERTICAL | wx.ALIGN_RIGHT) self.calves_box = wx.TextCtrl(self, wx.ID_ANY, style=wx.TE_READONLY) self.grid_sizer.Add(self.calves_box, (4,3), flag=wx.ALIGN_CENTER_VERTICAL) label = wx.StaticText(self, wx.ID_ANY, _("Neck Size:")) self.grid_sizer.Add(label, (5,2), flag=wx.ALIGN_CENTER_VERTICAL | wx.ALIGN_RIGHT) self.neck_box = wx.TextCtrl(self, wx.ID_ANY, style=wx.TE_READONLY) self.grid_sizer.Add(self.neck_box, (5,3), flag=wx.ALIGN_CENTER_VERTICAL) # Create 'Ok' button self.btn_sizer = wx.BoxSizer(wx.HORIZONTAL) self.close_btn = wx.Button(self, wx.ID_CLOSE) self.btn_sizer.Add(self.close_btn, 0, wx.ALIGN_RIGHT) # bind event self.Bind(wx.EVT_BUTTON, self.on_close, self.close_btn) # set up main sizer self.sizer.Add(self.grid_sizer, 0, wx.ALL, 5) # Insert static line between controls line = wx.StaticLine(self, style=wx.LI_HORIZONTAL) self.sizer.Add(line, 0, wx.EXPAND | wx.LEFT | wx.RIGHT, 5) self.sizer.Add(self.btn_sizer, 0, wx.ALIGN_RIGHT | wx.ALL, 5) self.SetSizer(self.sizer) self.sizer.Fit(self) def on_calc(self, event): array = [] try: array.append(float(self.wrist_box.GetValue())) except ValueError: array.append(0) array.append(array[0] * 6.5) array.append(array[1] * 0.85) array.append(array[1] * 0.70) array.append(array[1] * 0.53) array.append(array[1] * 0.37) array.append(array[1] * 0.36) array.append(array[1] * 0.34) array.append(array[1] * 0.29) for i in xrange(0, 9): array[i] = round((array[i] + 0.0001) * 100, 1) array[i] = round(array[i] / 100.0, 1) self.wrist_box.SetValue(str(array[0])) self.chest_box.SetValue(str(array[1])) self.hips_box.SetValue(str(array[2])) self.waist_box.SetValue(str(array[3])) self.thigh_box.SetValue(str(array[4])) self.neck_box.SetValue(str(array[5])) self.arms_box.SetValue(str(array[6])) self.calves_box.SetValue(str(array[7])) self.forearms_box.SetValue(str(array[8])) def on_close(self, event): self.Destroy()