British単位系からSI系への換算ツール(2)
雛形だけ作った(下の写真)。このソフトでできることは次の通り(になる予定)。
日本のほとんどの人にとっては使う機会はないだろうな。でも、このような単位系を日常で使っている国もあるんだよな。
ここまでのソース。wx.Choiceではなくて、wxPythonのデモにあったComboCtrlのクラスComboCtrlWithCustomPopupAnimを使おうとしたが、動かなかったのでやめた。
#!/bin/env python # coding: utf-8 #------------------------------------------------------------------------ import wx import os, sys ChoiceList = ["Length [ft]", "Area [ft^2]", "Velocity [ft/s]", "Mass [lbm]", "Energy [Btu]", "Temperature [F]", "Density [lbm/ft^3]", "Mass flux [lbm/s]", "Enthalpy [Btu/lbm]", "Pressure [psia]", "Pressure [lbf/ft^2]", "Heat [Btu/s]"] SIList = ["[m]", "[m^2]", "[m/s]", "[kg]", "[J]", "[K]", "[kg/m^3]", "[kg/s]", "[kJ/kg]", "[Pa]", "[Pa]", "[W]"] class MainFrame(wx.Frame): def __init__(self, id, title): width, height = 450,120 wx.Frame.__init__(self, id, title=u"Changing Unit", size=wx.Size(width, height)) Pan = wx.Panel(self, -1) self.Chce = wx.Choice(Pan, -1, choices=ChoiceList) self.TxtCtl = wx.TextCtrl(Pan, -1, "Enter a value", size=(130,-1)) self.StTxt1 = wx.StaticText(Pan, -1, u" = ") self.Btn = wx.Button(Pan, -1, u"換算する") self.Chce.Bind(wx.EVT_CHOICE, self.OnChoice) self.Btn.Bind(wx.EVT_BUTTON, self.ConvUnit) vsizer0 = wx.BoxSizer(wx.VERTICAL) hsizer1 = wx.BoxSizer(wx.HORIZONTAL) hsizer1.Add(self.TxtCtl, 0, wx.ALIGN_LEFT|wx.ALL, 5) hsizer1.Add(self.Chce, 0, wx.ALIGN_LEFT|wx.ALL, 5) hsizer1.Add(self.StTxt1, 0, wx.ALIGN_LEFT|wx.ALL, 5) vsizer0.Add(hsizer1,0, wx.ALIGN_LEFT|wx.ALL, 5) vsizer0.Add(self.Btn,0, wx.ALIGN_LEFT|wx.ALL, 5) Pan.SetSizer(vsizer0) vsizer0.Fit(Pan) def OnChoice(self, event): pass def ConvUnit(self, event): BtVal= self.TxtCtl.GetValue() CNum = self.Chce.GetSelection() newString = "= " + SIList[CNum] self.StTxt1.SetLabel(newString) class Application(wx.App): def OnInit(self): frame = MainFrame(None, -1) frame.Show(True) self.SetTopWindow(frame) return True def main(): app = Application(0) app.MainLoop() if __name__ == '__main__': main()