Advertisement
Guest User

Untitled

a guest
Aug 18th, 2019
88
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 4.20 KB | None | 0 0
  1. import wx
  2.  
  3. class CalcFrame(wx.Frame):
  4. def __init__(self):
  5. super().__init__(parent=None, title='Calculator', size=(290, 330), style=wx.DEFAULT_FRAME_STYLE ^ wx.RESIZE_BORDER)
  6. self.panel = wx.Panel(self)
  7.  
  8. self.result = wx.StaticText(self.panel, label="0", pos=(10, 10), style=wx.ALIGN_RIGHT)
  9.  
  10. self.ico = wx.Icon('icon.png', wx.BITMAP_TYPE_PNG)
  11. self.SetIcon(self.ico)
  12.  
  13. btn_ac = wx.Button(self.panel, label='AC', pos=(10, 60), size=(60, 40))
  14. btn_ac.Bind(wx.EVT_BUTTON, self.on_press)
  15. btn_c = wx.Button(self.panel, label='C', pos=(75, 60), size=(60, 40))
  16. btn_c.Bind(wx.EVT_BUTTON, self.on_press)
  17. btn_div = wx.Button(self.panel, label='/', pos=(140, 60), size=(60, 40))
  18. btn_div.Bind(wx.EVT_BUTTON, self.on_press)
  19. btn_mul = wx.Button(self.panel, label='*', pos=(205, 60), size=(60, 40))
  20. btn_mul.Bind(wx.EVT_BUTTON, self.on_press)
  21.  
  22. btn_7 = wx.Button(self.panel, label='7', pos=(10, 105), size=(60, 40))
  23. btn_7.Bind(wx.EVT_BUTTON, self.on_press)
  24. btn_8 = wx.Button(self.panel, label='8', pos=(75, 105), size=(60, 40))
  25. btn_8.Bind(wx.EVT_BUTTON, self.on_press)
  26. btn_9 = wx.Button(self.panel, label='9', pos=(140, 105), size=(60, 40))
  27. btn_9.Bind(wx.EVT_BUTTON, self.on_press)
  28. btn_sub = wx.Button(self.panel, label='-', pos=(205, 105), size=(60, 40))
  29. btn_sub.Bind(wx.EVT_BUTTON, self.on_press)
  30.  
  31. btn_4 = wx.Button(self.panel, label='4', pos=(10, 150), size=(60, 40))
  32. btn_4.Bind(wx.EVT_BUTTON, self.on_press)
  33. btn_5 = wx.Button(self.panel, label='5', pos=(75, 150), size=(60, 40))
  34. btn_5.Bind(wx.EVT_BUTTON, self.on_press)
  35. btn_6 = wx.Button(self.panel, label='6', pos=(140, 150), size=(60, 40))
  36. btn_6.Bind(wx.EVT_BUTTON, self.on_press)
  37. btn_add = wx.Button(self.panel, label='+', pos=(205, 150), size=(60, 40))
  38. btn_add.Bind(wx.EVT_BUTTON, self.on_press)
  39.  
  40. btn_1 = wx.Button(self.panel, label='1', pos=(10, 195), size=(60, 40))
  41. btn_1.Bind(wx.EVT_BUTTON, self.on_press)
  42. btn_2 = wx.Button(self.panel, label='2', pos=(75, 195), size=(60, 40))
  43. btn_2.Bind(wx.EVT_BUTTON, self.on_press)
  44. btn_3 = wx.Button(self.panel, label='3', pos=(140, 195), size=(60, 40))
  45. btn_3.Bind(wx.EVT_BUTTON, self.on_press)
  46.  
  47. btn_0 = wx.Button(self.panel, label='0', pos=(10, 240), size=(125, 40))
  48. btn_0.Bind(wx.EVT_BUTTON, self.on_press)
  49. btn_p = wx.Button(self.panel, label='.', pos=(140, 240), size=(60, 40))
  50. btn_p.Bind(wx.EVT_BUTTON, self.on_press)
  51. btn_eq = wx.Button(self.panel, label='=', pos=(205, 195), size=(60, 85))
  52. btn_eq.Bind(wx.EVT_BUTTON, self.on_press)
  53.  
  54.  
  55. self.Show()
  56.  
  57. self.show_result = False
  58.  
  59. def on_press(self, event):
  60. self.symbol = event.GetEventObject().GetLabel()
  61. if self.symbol in "0123456789":
  62. if self.result.Label == "0" or self.show_result:
  63. self.result.SetLabel(self.symbol)
  64. else:
  65. self.result.Label += self.symbol
  66. self.result.SetLabel(self.result.Label)
  67. elif self.symbol in "+-*/":
  68. if self.result.Label[-1] in "+-*/":
  69. self.result.Label = self.result.Label[:-1] + self.symbol
  70. self.result.SetLabel(self.result.Label)
  71. else:
  72. self.result.Label += self.symbol
  73. self.result.SetLabel(self.result.Label)
  74. elif self.symbol == "." and self.result.Label[-1] != '.':
  75. self.result.Label += self.symbol
  76. self.result.SetLabel(self.result.Label)
  77. elif self.symbol == "C":
  78. self.result.Label = self.result.Label[:-1]
  79. self.result.SetLabel(self.result.Label)
  80. if len(self.result.Label) == 0:
  81. self.result.SetLabel("0")
  82. elif self.symbol == "AC":
  83. self.result.SetLabel("0")
  84. elif self.symbol == "=":
  85. self.result.Label = str(eval(self.result.Label))
  86. self.result.SetLabel(self.result.Label)
  87. self.show_result = True
  88. if self.symbol != "=":
  89. self.show_result = False
  90.  
  91. if __name__ == '__main__':
  92. app = wx.App()
  93. frame = CalcFrame()
  94. app.MainLoop()
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement