Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- import wx
- class CalcFrame(wx.Frame):
- def __init__(self):
- super().__init__(parent=None, title='Calculator', size=(290, 330), style=wx.DEFAULT_FRAME_STYLE ^ wx.RESIZE_BORDER)
- self.panel = wx.Panel(self)
- self.result = wx.StaticText(self.panel, label="0", pos=(10, 10), style=wx.ALIGN_RIGHT)
- self.ico = wx.Icon('icon.png', wx.BITMAP_TYPE_PNG)
- self.SetIcon(self.ico)
- btn_ac = wx.Button(self.panel, label='AC', pos=(10, 60), size=(60, 40))
- btn_ac.Bind(wx.EVT_BUTTON, self.on_press)
- btn_c = wx.Button(self.panel, label='C', pos=(75, 60), size=(60, 40))
- btn_c.Bind(wx.EVT_BUTTON, self.on_press)
- btn_div = wx.Button(self.panel, label='/', pos=(140, 60), size=(60, 40))
- btn_div.Bind(wx.EVT_BUTTON, self.on_press)
- btn_mul = wx.Button(self.panel, label='*', pos=(205, 60), size=(60, 40))
- btn_mul.Bind(wx.EVT_BUTTON, self.on_press)
- btn_7 = wx.Button(self.panel, label='7', pos=(10, 105), size=(60, 40))
- btn_7.Bind(wx.EVT_BUTTON, self.on_press)
- btn_8 = wx.Button(self.panel, label='8', pos=(75, 105), size=(60, 40))
- btn_8.Bind(wx.EVT_BUTTON, self.on_press)
- btn_9 = wx.Button(self.panel, label='9', pos=(140, 105), size=(60, 40))
- btn_9.Bind(wx.EVT_BUTTON, self.on_press)
- btn_sub = wx.Button(self.panel, label='-', pos=(205, 105), size=(60, 40))
- btn_sub.Bind(wx.EVT_BUTTON, self.on_press)
- btn_4 = wx.Button(self.panel, label='4', pos=(10, 150), size=(60, 40))
- btn_4.Bind(wx.EVT_BUTTON, self.on_press)
- btn_5 = wx.Button(self.panel, label='5', pos=(75, 150), size=(60, 40))
- btn_5.Bind(wx.EVT_BUTTON, self.on_press)
- btn_6 = wx.Button(self.panel, label='6', pos=(140, 150), size=(60, 40))
- btn_6.Bind(wx.EVT_BUTTON, self.on_press)
- btn_add = wx.Button(self.panel, label='+', pos=(205, 150), size=(60, 40))
- btn_add.Bind(wx.EVT_BUTTON, self.on_press)
- btn_1 = wx.Button(self.panel, label='1', pos=(10, 195), size=(60, 40))
- btn_1.Bind(wx.EVT_BUTTON, self.on_press)
- btn_2 = wx.Button(self.panel, label='2', pos=(75, 195), size=(60, 40))
- btn_2.Bind(wx.EVT_BUTTON, self.on_press)
- btn_3 = wx.Button(self.panel, label='3', pos=(140, 195), size=(60, 40))
- btn_3.Bind(wx.EVT_BUTTON, self.on_press)
- btn_0 = wx.Button(self.panel, label='0', pos=(10, 240), size=(125, 40))
- btn_0.Bind(wx.EVT_BUTTON, self.on_press)
- btn_p = wx.Button(self.panel, label='.', pos=(140, 240), size=(60, 40))
- btn_p.Bind(wx.EVT_BUTTON, self.on_press)
- btn_eq = wx.Button(self.panel, label='=', pos=(205, 195), size=(60, 85))
- btn_eq.Bind(wx.EVT_BUTTON, self.on_press)
- self.Show()
- self.show_result = False
- def on_press(self, event):
- self.symbol = event.GetEventObject().GetLabel()
- if self.symbol in "0123456789":
- if self.result.Label == "0" or self.show_result:
- self.result.SetLabel(self.symbol)
- else:
- self.result.Label += self.symbol
- self.result.SetLabel(self.result.Label)
- elif self.symbol in "+-*/":
- if self.result.Label[-1] in "+-*/":
- self.result.Label = self.result.Label[:-1] + self.symbol
- self.result.SetLabel(self.result.Label)
- else:
- self.result.Label += self.symbol
- self.result.SetLabel(self.result.Label)
- elif self.symbol == "." and self.result.Label[-1] != '.':
- self.result.Label += self.symbol
- self.result.SetLabel(self.result.Label)
- elif self.symbol == "C":
- self.result.Label = self.result.Label[:-1]
- self.result.SetLabel(self.result.Label)
- if len(self.result.Label) == 0:
- self.result.SetLabel("0")
- elif self.symbol == "AC":
- self.result.SetLabel("0")
- elif self.symbol == "=":
- self.result.Label = str(eval(self.result.Label))
- self.result.SetLabel(self.result.Label)
- self.show_result = True
- if self.symbol != "=":
- self.show_result = False
- if __name__ == '__main__':
- app = wx.App()
- frame = CalcFrame()
- app.MainLoop()
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement