1 import wx
2 class Form(wx.Frame):
3 def __init__( self, parent, id, title ):
4 wx.Frame.__init__(self,parent,id,title,wx.DefaultPosition,wx.Size(300, 250))
5 self.formula = False
6 menuBar = wx.MenuBar()
7 mnuFile = wx.Menu()
8 mnuFile.Append( 22, '&Quit', 'Exit Calculator' )
9 menuBar.Append( mnuFile, '&File' )
10 wx.EVT_MENU( self, 22, self.OnClose )
11 self.SetMenuBar( menuBar )
12
13 self.display = wx.TextCtrl(self, -1, '', style=wx.TE_RIGHT)
14 gs = wx.GridSizer(5, 4, 3, 3)
15 gs.AddMany(
16 [
17 (wx.Button(self, 12, '-'), 0, wx.EXPAND),
18 (wx.Button(self, 20, 'Cls'), 0, wx.EXPAND),
19 (wx.Button(self, 21, 'Bck'), 0, wx.EXPAND),
20 (wx.StaticText(self, -1, ''), 0, wx.EXPAND),
21 (wx.Button(self, 22, 'Close'), 0, wx.EXPAND),
22 (wx.Button(self, 1, '7'), 0, wx.EXPAND),
23 (wx.Button(self, 2, '8'), 0, wx.EXPAND),
24 (wx.Button(self, 3, '9'), 0, wx.EXPAND),
25 (wx.Button(self, 4, '/'), 0, wx.EXPAND),
26 (wx.Button(self, 5, '4'), 0, wx.EXPAND),
27 (wx.Button(self, 6, '5'), 0, wx.EXPAND),
28 (wx.Button(self, 7, '6'), 0, wx.EXPAND),
29 (wx.Button(self, 8, '*'), 0, wx.EXPAND),
30 (wx.Button(self, 10, '2'), 0, wx.EXPAND),
31 (wx.Button(self, 11, '3'), 0, wx.EXPAND),
32 (wx.Button(self, 9, '1'), 0, wx.EXPAND),
33 (wx.Button(self, 16, '+'), 0, wx.EXPAND),
34 (wx.Button(self, 15, '='), 0, wx.EXPAND),
35 (wx.Button(self, 14, '.'), 0, wx.EXPAND),
36 (wx.Button(self, 13, '0'), 0, wx.EXPAND)
37 ]
38 )
39 sizer = wx.BoxSizer( wx.VERTICAL )
40 sizer.Add(self.display, 0, wx.EXPAND|wx.TOP|wx.BOTTOM, 4)
41 sizer.Add(gs, 1, wx.EXPAND)
42 self.SetSizer(sizer)
43 self.Centre()
44
45 wx.EVT_BUTTON(self, 20, self.OnClear)
46 wx.EVT_BUTTON(self, 21, self.OnBackspace)
47 wx.EVT_BUTTON(self, 22, self.OnClose)
48 wx.EVT_BUTTON(self, 1, self.OnNumber)
49 wx.EVT_BUTTON(self, 2, self.OnNumber)
50 wx.EVT_BUTTON(self, 3, self.OnNumber)
51 wx.EVT_BUTTON(self, 4, self.OnFormula)
52 wx.EVT_BUTTON(self, 5, self.OnNumber)
53 wx.EVT_BUTTON(self, 6, self.OnNumber)
54 wx.EVT_BUTTON(self, 7, self.OnNumber)
55 wx.EVT_BUTTON(self, 8, self.OnFormula)
56 wx.EVT_BUTTON(self, 9, self.OnNumber)
57 wx.EVT_BUTTON(self, 10, self.OnNumber)
58 wx.EVT_BUTTON(self, 11, self.OnNumber)
59 wx.EVT_BUTTON(self, 12, self.OnFormula)
60 wx.EVT_BUTTON(self, 13, self.OnNumber)
61 wx.EVT_BUTTON(self, 14, self.OnFormula)
62 wx.EVT_BUTTON(self, 15, self.OnEqual)
63 wx.EVT_BUTTON(self, 16, self.OnFormula)
64
65 def OnClear(self, event):
66 self.display.Clear()
67 def OnBackspace(self, event):
68 formula = self.display.GetValue()
69 self.display.Clear()
70 self.display.SetValue(formula[:-1])
71 def OnClose(self, event):
72 self.Close()
73 def OnEqual(self,event):
74 if self.formula:
75 return
76 formula = self.display.GetValue()
77 self.formula = True
78 try:
79 self.display.Clear()
80 output = eval(formula)
81 self.display.AppendText(str(output))
82 except StandardError:
83 self.display.AppendText("Error")
84
85 def OnFormula(self,event):
86 if self.formula:
87 return
88 self.display.AppendText(event.EventObject.LabelText)
89
90 def OnNumber(self,event):
91 if self.formula:
92 self.display.Clear()
93 self.formula=False
94 self.display.AppendText(event.EventObject.LabelText)
95
96 class MyApp(wx.App):
97 def OnInit(self):
98 frame = Form(None, -1, "Phoenix Caculator")
99 frame.Show(True)
100 self.SetTopWindow(frame)
101 return True
102
103 app = MyApp(0)
104 app.MainLoop()
import wx
class Form(wx.Frame):
def __init__( self, parent, id, title ):
wx.Frame.__init__(self,parent,id,title,wx.DefaultPosition,wx.Size(300, 250))
self.formula = False
menuBar = wx.MenuBar()
mnuFile = wx.Menu()
mnuFile.Append( 22, '&Quit', 'Exit Calculator' )
menuBar.Append( mnuFile, '&File' )
wx.EVT_MENU( self, 22, self.OnClose )
self.SetMenuBar( menuBar )
self.display = wx.TextCtrl(self, -1, '', style=wx.TE_RIGHT)
gs = wx.GridSizer(5, 4, 3, 3)
gs.AddMany(
[
(wx.Button(self, 12, '-'), 0, wx.EXPAND),
(wx.Button(self, 20, 'Cls'), 0, wx.EXPAND),
(wx.Button(self, 21, 'Bck'), 0, wx.EXPAND),
(wx.StaticText(self, -1, ''), 0, wx.EXPAND),
(wx.Button(self, 22, 'Close'), 0, wx.EXPAND),
(wx.Button(self, 1, '7'), 0, wx.EXPAND),
(wx.Button(self, 2, '8'), 0, wx.EXPAND),
(wx.Button(self, 3, '9'), 0, wx.EXPAND),
(wx.Button(self, 4, '/'), 0, wx.EXPAND),
(wx.Button(self, 5, '4'), 0, wx.EXPAND),
(wx.Button(self, 6, '5'), 0, wx.EXPAND),
(wx.Button(self, 7, '6'), 0, wx.EXPAND),
(wx.Button(self, 8, '*'), 0, wx.EXPAND),
(wx.Button(self, 10, '2'), 0, wx.EXPAND),
(wx.Button(self, 11, '3'), 0, wx.EXPAND),
(wx.Button(self, 9, '1'), 0, wx.EXPAND),
(wx.Button(self, 16, '+'), 0, wx.EXPAND),
(wx.Button(self, 15, '='), 0, wx.EXPAND),
(wx.Button(self, 14, '.'), 0, wx.EXPAND),
(wx.Button(self, 13, '0'), 0, wx.EXPAND)
]
)
sizer = wx.BoxSizer( wx.VERTICAL )
sizer.Add(self.display, 0, wx.EXPAND|wx.TOP|wx.BOTTOM, 4)
sizer.Add(gs, 1, wx.EXPAND)
self.SetSizer(sizer)
self.Centre()
wx.EVT_BUTTON(self, 20, self.OnClear)
wx.EVT_BUTTON(self, 21, self.OnBackspace)
wx.EVT_BUTTON(self, 22, self.OnClose)
wx.EVT_BUTTON(self, 1, self.OnNumber)
wx.EVT_BUTTON(self, 2, self.OnNumber)
wx.EVT_BUTTON(self, 3, self.OnNumber)
wx.EVT_BUTTON(self, 4, self.OnFormula)
wx.EVT_BUTTON(self, 5, self.OnNumber)
wx.EVT_BUTTON(self, 6, self.OnNumber)
wx.EVT_BUTTON(self, 7, self.OnNumber)
wx.EVT_BUTTON(self, 8, self.OnFormula)
wx.EVT_BUTTON(self, 9, self.OnNumber)
wx.EVT_BUTTON(self, 10, self.OnNumber)
wx.EVT_BUTTON(self, 11, self.OnNumber)
wx.EVT_BUTTON(self, 12, self.OnFormula)
wx.EVT_BUTTON(self, 13, self.OnNumber)
wx.EVT_BUTTON(self, 14, self.OnFormula)
wx.EVT_BUTTON(self, 15, self.OnEqual)
wx.EVT_BUTTON(self, 16, self.OnFormula)
def OnClear(self, event):
self.display.Clear()
def OnBackspace(self, event):
formula = self.display.GetValue()
self.display.Clear()
self.display.SetValue(formula[:-1])
def OnClose(self, event):
self.Close()
def OnEqual(self,event):
if self.formula:
return
formula = self.display.GetValue()
self.formula = True
try:
self.display.Clear()
output = eval(formula)
self.display.AppendText(str(output))
except StandardError:
self.display.AppendText("Error")
def OnFormula(self,event):
if self.formula:
return
self.display.AppendText(event.EventObject.LabelText)
def OnNumber(self,event):
if self.formula:
self.display.Clear()
self.formula=False
self.display.AppendText(event.EventObject.LabelText)
class MyApp(wx.App):
def OnInit(self):
frame = Form(None, -1, "Phoenix Caculator")
frame.Show(True)
self.SetTopWindow(frame)
return True
app = MyApp(0)
app.MainLoop()