import wx
class MyFrame3(wx.Frame):
def __init__(self, *args, **kwds):
kwds["style"] = wx.DEFAULT_FRAME_STYLE
wx.Frame.__init__(self, *args, **kwds)
self.cls = wx.Button(self, -1, "Cancella")
self.back = wx.Button(self, -1, "Indietro")
self.close = wx.Button(self, -1, "Chiudi")
self.seven = wx.Button(self, -1, "7")
self.eight = wx.Button(self, -1, "8")
self.nine = wx.Button(self, -1, "9")
self.divide = wx.Button(self, -1, "/")
self.four = wx.Button(self, -1, "4")
self.five = wx.Button(self, -1, "5")
self.six = wx.Button(self, -1, "6")
self.multiply = wx.Button(self, -1, "*")
self.one = wx.Button(self, -1, "1")
self.two = wx.Button(self, -1, "2")
self.three = wx.Button(self, -1, "3")
self.minus = wx.Button(self, -1, "-")
self.zero = wx.Button(self, -1, "0")
self.dot = wx.Button(self, -1, ".")
self.equal = wx.Button(self, -1, "=")
self.plus = wx.Button(self, -1, "+")
self.frame_3_menubar = wx.MenuBar()
self.files = wx.Menu()
self.Quit = wx.MenuItem(self.files, 130, "ChiuditAlt+F4", "", wx.ITEM_NORMAL)
self.Quit.SetBitmap(wx.Bitmap('icons/Exit.png'))
self.files.AppendItem(self.Quit)
self.frame_3_menubar.Append(self.files, "File")
self.SetMenuBar(self.frame_3_menubar)
self.__set_properties()
self.__do_layout()
self.formula = False
self.Bind(wx.EVT_BUTTON, self.OnCls, self.cls)
self.Bind(wx.EVT_BUTTON, self.OnBack, self.back)
self.Bind(wx.EVT_BUTTON, self.OnClose, self.close)
self.Bind(wx.EVT_BUTTON, self.OnSeven, self.seven)
self.Bind(wx.EVT_BUTTON, self.OnEight, self.eight)
self.Bind(wx.EVT_BUTTON, self.OnNine, self.nine)
self.Bind(wx.EVT_BUTTON, self.OnDivide, self.divide)
self.Bind(wx.EVT_BUTTON, self.OnFour, self.four)
self.Bind(wx.EVT_BUTTON, self.OnFive, self.five)
self.Bind(wx.EVT_BUTTON, self.OnSix, self.six)
self.Bind(wx.EVT_BUTTON, self.OnMultiply, self.multiply)
self.Bind(wx.EVT_BUTTON, self.OnOne, self.one)
self.Bind(wx.EVT_BUTTON, self.OnTwo, self.two)
self.Bind(wx.EVT_BUTTON, self.OnThree, self.three)
self.Bind(wx.EVT_BUTTON, self.OnMinus, self.minus)
self.Bind(wx.EVT_BUTTON, self.OnZero, self.zero)
self.Bind(wx.EVT_BUTTON, self.OnDot, self.dot)
self.Bind(wx.EVT_BUTTON, self.OnEqual, self.equal)
self.Bind(wx.EVT_BUTTON, self.OnPlus, self.plus)
self.Bind(wx.EVT_MENU, self.Onquit, self.Quit)
def __set_properties(self):
self.SetTitle("ShinWorld Calculator")
_icon = wx.EmptyIcon()
_icon.CopyFromBitmap(wx.Bitmap("icons/OD.ico", wx.BITMAP_TYPE_ANY))
self.SetIcon(_icon)
def __do_layout(self):
sizer_1 = wx.BoxSizer(wx.VERTICAL)
self.display = wx.TextCtrl(self, -1, '', style=wx.TE_RIGHT)
sizer_1.Add(self.display, 0, wx.EXPAND | wx.TOP | wx.BOTTOM, 4)
grid_sizer_1 = wx.GridSizer(4, 4, 3, 3)
grid_sizer_1.Add(self.cls, 0, wx.EXPAND, 6)
grid_sizer_1.Add(self.back, 0, wx.EXPAND, 6)
grid_sizer_1.Add(wx.StaticText(self, -1, ''), 0, wx.EXPAND),
grid_sizer_1.Add(self.close, 0, wx.EXPAND, 0)
grid_sizer_1.Add(self.seven, 0, wx.EXPAND, 0)
grid_sizer_1.Add(self.eight, 0, wx.EXPAND, 0)
grid_sizer_1.Add(self.nine, 0, wx.EXPAND, 0)
grid_sizer_1.Add(self.divide, 0, wx.EXPAND, 0)
grid_sizer_1.Add(self.four, 0, wx.EXPAND, 0)
grid_sizer_1.Add(self.five, 0, wx.EXPAND, 0)
grid_sizer_1.Add(self.six, 0, wx.EXPAND, 0)
grid_sizer_1.Add(self.multiply, 0, wx.EXPAND, 0)
grid_sizer_1.Add(self.one, 0, wx.EXPAND, 0)
grid_sizer_1.Add(self.two, 0, wx.EXPAND, 0)
grid_sizer_1.Add(self.three, 0, wx.EXPAND, 0)
grid_sizer_1.Add(self.minus, 0, wx.EXPAND, 0)
grid_sizer_1.Add(self.zero, 0, wx.EXPAND, 0)
grid_sizer_1.Add(self.dot, 0, wx.EXPAND, 0)
grid_sizer_1.Add(self.equal, 0, wx.EXPAND, 0)
grid_sizer_1.Add(self.plus, 0, wx.EXPAND, 0)
sizer_1.Add(grid_sizer_1, 4, wx.EXPAND|wx.ALIGN_BOTTOM, 0)
self.SetSizer(sizer_1)
sizer_1.Fit(self)
self.Layout()
self.Centre()
def OnCls(self, event):
self.display.Clear()
def OnBack(self, event):
formula = self.display.GetValue()
self.display.Clear()
self.display.SetValue(formula[:-1])
def OnClose(self, event):
self.Close()
def OnSeven(self, event):
if self.formula:
self.display.Clear()
self.formula = False
self.display.AppendText('7')
def OnEight(self, event):
if self.formula:
self.display.Clear()
self.formula = False
self.display.AppendText('8')
def OnNine(self, event):
if self.formula:
self.display.Clear()
self.formula = False
self.display.AppendText('9')
def OnDivide(self, event):
if self.formula:
return
self.display.AppendText('/')
def OnFour(self, event):
if self.formula:
self.display.Clear()
self.formula = False
self.display.AppendText('4')
def OnFive(self, event):
if self.formula:
self.display.Clear()
self.formula = False
self.display.AppendText('5')
def OnSix(self, event):
if self.formula:
self.display.Clear()
self.formula = False
self.display.AppendText('6')
def OnMultiply(self, event):
if self.formula:
return
self.display.AppendText('*')
def OnOne(self, event):
if self.formula:
self.display.Clear()
self.formula = False
self.display.AppendText('1')
def OnTwo(self, event):
if self.formula:
self.display.Clear()
self.formula = False
self.display.AppendText('2')
def OnThree(self, event):
if self.formula:
self.display.Clear()
self.formula = False
self.display.AppendText('3')
def OnMinus(self, event):
if self.formula:
return
self.display.AppendText('-')
def OnZero(self, event):
if self.formula:
self.display.Clear()
self.formula = False
self.display.AppendText('0')
def OnDot(self, event):
if self.formula:
return
self.display.AppendText('.')
def OnEqual(self, event):
if self.formula:
return
formula = self.display.GetValue()
self.formula = False
try:
self.display.Clear()
output = eval(formula)
self.display.AppendText(str(output))
except StandardError:
dlg = wx.MessageDialog(self, 'Errore durante l'esecuzione!', 'ShinWorld Calculetor', wx.OK | wx.ICON_ERROR)
dlg.ShowModal()
dlg.Destroy()
def OnPlus(self, event):
if self.formula:
return
self.display.AppendText('+')
def Onquit(self, event):
self.Close()
class MyApp3(wx.App):
def OnInit(self):
wx.InitAllImageHandlers()
frame_3 = MyFrame3(None, -1, "")
self.SetTopWindow(frame_3)
frame_3.Show()
return 1
if __name__ == "__main__":
app3 = MyApp3(0)
app3.MainLoop()