#coding:utf-8
'''
Created on 2014年3月2日
@author: silence
'''
import wx
import time
import wx.gizmos as gizmos
ID_NUM_0=wx.NewId()
ID_NUM_1=wx.NewId()
ID_NUM_2=wx.NewId()
ID_NUM_3=wx.NewId()
ID_NUM_4=wx.NewId()
ID_NUM_5=wx.NewId()
ID_NUM_6=wx.NewId()
ID_NUM_7=wx.NewId()
ID_NUM_8=wx.NewId()
ID_NUM_9=wx.NewId()
ID_CLOSE=wx.NewId()
ID_ENABLE=wx.NewId()
ID_CLEAR=wx.NewId()
ID_BACK=wx.NewId()
ID_MUTI=wx.NewId()
ID_ADD=wx.NewId()
ID_DIV=wx.NewId()
ID_SUB=wx.NewId()
ID_DOT=wx.NewId()
ID_EQU=wx.NewId()
ID_OFF=wx.NewId()
ID_ON=wx.NewId()
class Frame(wx.Frame):
def __init__(self,parent,id,title):
wx.Frame.__init__(self,parent,id,title,size=(460,400))
self.SetBackgroundColour("white")
self.panel=wx.Panel(self,-1)
self.number_1=0.0
self.number_2=0.0
self.result=0.0
self.operator=''
self.inputdialog=wx.TextCtrl(self.panel,id=-1,value='',size=(380,30),style=wx.TE_RIGHT)
self.font=wx.Font(pointSize=20,family=wx.FONTFAMILY_MODERN,style=wx.FONTSTYLE_NORMAL,weight=wx.FONTWEIGHT_BOLD,face='')
self.inputdialog.SetForegroundColour(wx.Colour(128,64,0))
self.inputdialog.SetFont(self.font)
self.led_num = gizmos.LEDNumberCtrl(self.panel,id=-1,size=(380,30),pos=(30,330),style=gizmos.LED_ALIGN_CENTER)
self.OnTimer(None)
self.Bind(wx.EVT_CLOSE,self.OnClose)
self.timer = wx.Timer(self)
self.timer.Start(1000)
self.Bind(wx.EVT_TIMER, self.OnTimer)
self.gbs=wx.GridBagSizer(7,9)
self.gbs.SetHGap(20)
self.gbs.SetVGap(20)
self.gbs.SetRows(9)
self.gbs.SetCols(7)
self.bt_num_1=wx.Button(self.panel,id=ID_NUM_1,label='1',size=(60,30))
self.bt_num_2=wx.Button(self.panel,id=ID_NUM_2,label='2',size=(60,30))
self.bt_num_3=wx.Button(self.panel,id=ID_NUM_3,label='3',size=(60,30))
self.bt_num_4=wx.Button(self.panel,id=ID_NUM_3,label='4',size=(60,30))
self.bt_num_5=wx.Button(self.panel,id=ID_NUM_5,label='5',size=(60,30))
self.bt_num_6=wx.Button(self.panel,id=ID_NUM_6,label='6',size=(60,30))
self.bt_num_7=wx.Button(self.panel,id=ID_NUM_7,label='7',size=(60,30))
self.bt_num_8=wx.Button(self.panel,id=ID_NUM_8,label='8',size=(60,30))
self.bt_num_9=wx.Button(self.panel,id=ID_NUM_9,label='9',size=(60,30))
self.bt_num_0=wx.Button(self.panel,id=ID_NUM_0,label='0',size=(60,30))
self.bt_muti=wx.Button(self.panel,id=ID_MUTI,label='*',size=(60,30))
self.bt_sub=wx.Button(self.panel,id=ID_SUB,label='-',size=(60,30))
self.bt_add=wx.Button(self.panel,id=ID_ADD,label='+',size=(60,30))
self.bt_div=wx.Button(self.panel,id=ID_DIV,label='/',size=(60,30))
self.bt_dot=wx.Button(self.panel,id=ID_DOT,label='.',size=(60,30))
self.bt_equ=wx.Button(self.panel,id=ID_EQU,label='=',size=(60,30))
self.bt_clear=wx.Button(self.panel,id=ID_CLEAR,label=u"清除",size=(60,180))
self.bt_back=wx.Button(self.panel,id=ID_BACK,label=u"退格",size=(140,30))
self.bt_off=wx.Button(self.panel,id=ID_OFF,label=u"OFF",size=(60,30))
self.bt_on=wx.Button(self.panel,id=ID_ON,label=u"ON",size=(60,30))
self.gbs.Add(self.inputdialog,pos=(1,1),span=(1,5))
self.gbs.Add(self.bt_back,pos=(2,1),span=(1,2))
self.gbs.Add(self.bt_off,(2,3))
self.gbs.Add(self.bt_on,(2,4))
self.gbs.Add(self.bt_num_1,(3,1))
self.gbs.Add(self.bt_num_2,(3,2))
self.gbs.Add(self.bt_num_3,(3,3))
self.gbs.Add(self.bt_num_4,(4,1))
self.gbs.Add(self.bt_num_5,(4,2))
self.gbs.Add(self.bt_num_6,(4,3))
self.gbs.Add(self.bt_num_7,(5,1))
self.gbs.Add(self.bt_num_8,(5,2))
self.gbs.Add(self.bt_num_9,(5,3))
self.gbs.Add(self.bt_num_0,(6,1))
self.gbs.Add(self.bt_dot,(6,2))
self.gbs.Add(self.bt_equ,(6,3))
self.gbs.Add(self.bt_div,(6,4))
self.gbs.Add(self.bt_add,(3,4))
self.gbs.Add(self.bt_sub,(4,4))
self.gbs.Add(self.bt_muti,(5,4))
self.gbs.Add(self.bt_clear,pos=(3,5),span=(4,1))
self.gbs.Layout()
self.inputdialog.Disable()
self.bt_num_1.Disable()
self.bt_num_2.Disable()
self.bt_num_3.Disable()
self.bt_num_4.Disable()
self.bt_num_5.Disable()
self.bt_num_6.Disable()
self.bt_num_7.Disable()
self.bt_num_8.Disable()
self.bt_num_9.Disable()
self.bt_num_0.Disable()
self.bt_muti.Disable()
self.bt_sub.Disable()
self.bt_add.Disable()
self.bt_div.Disable()
self.bt_dot.Disable()
self.bt_equ.Disable()
self.bt_clear.Disable()
self.bt_back.Disable()
self.bt_off.Disable()
self.Bind(wx.EVT_BUTTON,self.OnAdd,id=ID_ADD)
self.Bind(wx.EVT_BUTTON,self.OnSub,id=ID_SUB)
self.Bind(wx.EVT_BUTTON,self.OnMuti,id=ID_MUTI)
self.Bind(wx.EVT_BUTTON,self.OnDiv,id=ID_DIV)
self.Bind(wx.EVT_BUTTON,self.OnEqu,id=ID_EQU)
self.Bind(wx.EVT_BUTTON,self.OnClear,id=ID_CLEAR)
self.Bind(wx.EVT_BUTTON,self.OnStart,id=ID_ON)
self.Bind(wx.EVT_BUTTON,self.OnClose,id=ID_OFF)
self.Bind(wx.EVT_BUTTON,self.OnBack,id=ID_BACK)
self.Bind(wx.EVT_BUTTON,self.OnNum_0,id=ID_NUM_0)
self.Bind(wx.EVT_BUTTON,self.OnNum_1,id=ID_NUM_1)
self.Bind(wx.EVT_BUTTON,self.OnNum_2,id=ID_NUM_2)
self.Bind(wx.EVT_BUTTON,self.OnNum_3,id=ID_NUM_3)
self.Bind(wx.EVT_BUTTON,self.OnNum_4,id=ID_NUM_4)
self.Bind(wx.EVT_BUTTON,self.OnNum_5,id=ID_NUM_5)
self.Bind(wx.EVT_BUTTON,self.OnNum_6,id=ID_NUM_6)
self.Bind(wx.EVT_BUTTON,self.OnNum_7,id=ID_NUM_7)
self.Bind(wx.EVT_BUTTON,self.OnNum_8,id=ID_NUM_8)
self.Bind(wx.EVT_BUTTON,self.OnNum_9,id=ID_NUM_9)
self.Bind(wx.EVT_BUTTON,self.OnDot,id=ID_DOT)
def OnClose(self,event):
self.Destroy()
def OnAdd(self,event):
try:
self.number_1=float(self.inputdialog.GetValue())
except:
pass
self.operator='+'
self.inputdialog.SetValue('')
event.Skip()
def OnSub(self,event):
try:
self.number_1=float(self.inputdialog.GetValue())
except:
pass
self.operator='-'
self.inputdialog.SetValue('')
event.Skip()
def OnMuti(self,event):
try:
self.number_1=float(self.inputdialog.GetValue())
except:
pass
self.operator='*'
self.inputdialog.SetValue('')
event.Skip()
def OnDiv(self,event):
try:
self.number_1=float(self.inputdialog.GetValue())
except:
pass
self.operator='/'
self.inputdialog.SetValue('')
event.Skip()
def OnEqu(self,event):
try:
self.number_2=float(self.inputdialog.GetValue())
except:
self.number_2=0.0
op=self.operator
if op == '+':
self.result=self.number_1+self.number_2
elif op == '-':
self.result=self.number_1-self.number_2
elif op == '*':
self.result=self.number_1*self.number_2
elif op == '/':
if self.number_2 == 0.0:
self.inputdialog.SetValue('')
wx.MessageBox(u"除数不能为零",u"提示")
else:
self.result=self.number_1/self.number_2
elif op == '':
self.number_1=0.0
self.number_2=0.0
self.inputdialog.SetValue('')
return
else:
pass
self.inputdialog.SetValue("%.4f" %self.result)
event.Skip()
def OnClear(self,event):
self.number_1=0.0
self.number_2=0.0
self.operator=''
self.inputdialog.SetValue('')
event.Skip()
def OnStart(self,event):
self.bt_num_1.Enable()
self.bt_num_2.Enable()
self.bt_num_3.Enable()
self.bt_num_4.Enable()
self.bt_num_5.Enable()
self.bt_num_6.Enable()
self.bt_num_7.Enable()
self.bt_num_8.Enable()
self.bt_num_9.Enable()
self.bt_num_0.Enable()
self.bt_muti.Enable()
self.bt_sub.Enable()
self.bt_add.Enable()
self.bt_div.Enable()
self.bt_dot.Enable()
self.bt_equ.Enable()
self.bt_clear.Enable()
self.bt_back.Enable()
self.bt_off.Enable()
self.bt_on.Disable()
event.Skip()
def OnBack(self,event):
temp=self.inputdialog.GetValue()
temp=temp[:-1]
self.inputdialog.SetValue(temp)
event.Skip()
def OnNum_0(self,event):
temp=self.inputdialog.GetValue()
temp+='0'
self.inputdialog.SetValue(temp)
event.Skip()
def OnNum_1(self,event):
temp=self.inputdialog.GetValue()
temp+='1'
self.inputdialog.SetValue(temp)
event.Skip()
def OnNum_2(self,event):
temp=self.inputdialog.GetValue()
temp+='2'
self.inputdialog.SetValue(temp)
event.Skip()
def OnNum_3(self,event):
temp=self.inputdialog.GetValue()
temp+='3'
self.inputdialog.SetValue(temp)
event.Skip()
def OnNum_4(self,event):
temp=self.inputdialog.GetValue()
temp+='4'
self.inputdialog.SetValue(temp)
event.Skip()
def OnNum_5(self,event):
temp=self.inputdialog.GetValue()
temp+='5'
self.inputdialog.SetValue(temp)
event.Skip()
def OnNum_6(self,event):
temp=self.inputdialog.GetValue()
temp+='6'
self.inputdialog.SetValue(temp)
event.Skip()
def OnNum_7(self,event):
temp=self.inputdialog.GetValue()
temp+='7'
self.inputdialog.SetValue(temp)
event.Skip()
def OnNum_8(self,event):
temp=self.inputdialog.GetValue()
temp+='8'
self.inputdialog.SetValue(temp)
event.Skip()
def OnNum_9(self,event):
temp=self.inputdialog.GetValue()
temp+='9'
self.inputdialog.SetValue(temp)
event.Skip()
def OnDot(self,event):
temp=self.inputdialog.GetValue()
if temp.find('.')==-1:
temp+='.'
self.inputdialog.SetValue(temp)
else:
pass
event.Skip()
def OnTimer(self, evt):
t = time.localtime(time.time())
d_m_y = u"%d-%d-%d "%(t.tm_year,t.tm_mon,t.tm_mday)
st = time.strftime("%I-%M-%S", t)
self.led_num.SetValue(d_m_y+st)
class App(wx.App):
def OnInit(self):
frame=Frame(parent=None, id=wx.ID_ANY, title=u"简单计算器")
frame.Show(True)
return True
def OnExit(self):
self.Exit()
return True
def main():
app=App()
app.MainLoop()
if __name__=="__main__":
main()
运行效果,比较简单,不要见笑哈