ich beschäftige mich jetzt schon länger mit Python. Nach diversen Textbasierten Programmen hab ich mich jetzt an mein erstes Programm mit grafischer Oberfläche gewagt. Es ist ein Taschenrechner(voerst nur mit den Grundrechnungsarten) mit wxPython realisiert. Eine Ordentliche Dokumentation schreib in noch das Programm
Was sagt Ihr dazu? Was könnte ich verbessern?
mfg
Martin
Code: Alles auswählen
#!c:\python25\
import wx
import wx.gizmos as gizmos
class mainframe(wx.Frame):
def __init__(
self, parent, ID, title, pos = wx.DefaultPosition,
size = (250,250), style = wx.DEFAULT_FRAME_STYLE):
wx.Frame.__init__(self, parent , ID,
title , pos, size, style)
class panel(wx.Panel):
__buttonsize = (30, 30)
def __init__(self, parent):
wx.Panel.__init__(self, parent, -1,size = (250,250),
style=wx.NO_FULL_REPAINT_ON_RESIZE)
self.__display = Display(self)
#apply Buttons
b0 = wx.Button(self, 0, "0", (51,131),self.__buttonsize)
b1 = wx.Button(self, 1, "1", (20,40),self.__buttonsize)
b2 = wx.Button(self, 2, "2", (51,40),self.__buttonsize)
b3 = wx.Button(self, 3, "3", (81,40),self.__buttonsize)
b4 = wx.Button(self, 4, "4", (20,71),self.__buttonsize)
b5 = wx.Button(self, 5, "5", (51,71),self.__buttonsize)
b6 = wx.Button(self, 6, "6", (81,71),self.__buttonsize)
b7 = wx.Button(self, 7, "7", (20,101),self.__buttonsize)
b8 = wx.Button(self, 8, "8", (51,101),self.__buttonsize)
b9 = wx.Button(self, 9, "9", (81,101),self.__buttonsize)
bp = wx.Button(self, 10 , ".",(111, 101), self.__buttonsize)
badd = wx.Button(self, 11, "+", (111,40),self.__buttonsize)
bsub = wx.Button(self, 12, "-", (141,40),self.__buttonsize)
bmul = wx.Button(self, 13, "*", (111,71),self.__buttonsize)
bdiv = wx.Button(self, 14, "/", (141,71),self.__buttonsize)
bis = wx.Button(self, 15, "=", (141, 101), self.__buttonsize)
cancel = wx.Button(self, 16, "C",(171,40), self.__buttonsize)
#Events
self.Bind(wx.EVT_BUTTON, self.Numberinput, b0)
self.Bind(wx.EVT_BUTTON, self.Numberinput, b1)
self.Bind(wx.EVT_BUTTON, self.Numberinput, b2)
self.Bind(wx.EVT_BUTTON, self.Numberinput, b3)
self.Bind(wx.EVT_BUTTON, self.Numberinput, b4)
self.Bind(wx.EVT_BUTTON, self.Numberinput, b5)
self.Bind(wx.EVT_BUTTON, self.Numberinput, b6)
self.Bind(wx.EVT_BUTTON, self.Numberinput, b7)
self.Bind(wx.EVT_BUTTON, self.Numberinput, b8)
self.Bind(wx.EVT_BUTTON, self.Numberinput, b9)
self.Bind(wx.EVT_BUTTON, self.Numberinput, bp)
self.Bind(wx.EVT_BUTTON, self.operator, badd)
self.Bind(wx.EVT_BUTTON, self.operator, bsub)
self.Bind(wx.EVT_BUTTON, self.operator, bmul)
self.Bind(wx.EVT_BUTTON, self.operator, bdiv)
self.Bind(wx.EVT_BUTTON, self.result, bis)
self.Bind(wx.EVT_BUTTON, self.cancel, cancel)
def Numberinput(self, event):
value = self.__display.readdisplay()
if event.GetId() == 10: value += "."
else: value += str(event.GetId())
self.__display.writedisplay(value)
def operator(self, event):
operator = event.GetId()
self.__numbers1 = self.__display.readdisplay()
if operator == 11:
self.__op = "+"
elif operator == 12:
self.__op = "-"
elif operator == 13:
self.__op = "*"
elif operator == 14:
self.__op = "/"
self.__display.writedisplay("")
def result(self, event):
numbers2 = self.__display.readdisplay()
calc = Calculator(self.__numbers1, numbers2,self.__op)
self.__display.writedisplay(str(calc.getresult()))
def cancel(self, event):
self.__display.writedisplay("")
class Display(gizmos.LEDNumberCtrl):
def __init__(self, parent = panel, ID = -1, pos = (25,5), size =(150, 30)):
gizmos.LEDNumberCtrl.__init__(self, parent, ID , pos, size)
def readdisplay(self):
value = self.GetValue()
return value
def writedisplay(self, value):
self.SetValue(value)
class Calculator(object):
def __init__(self, numbers1, numbers2,operator):
self.__numbers1 = numbers1
self.__numbers2 = numbers2
self.__operator = operator
if self.__operator == "+":
self.__result = self.add()
elif self.__operator == "-":
self.__result = self.sub()
elif self.__operator == "/":
self.__result = self.div()
elif self.__operator == "*":
self.__result = self.mul()
def add(self):
result = float(self.__numbers1) + float(self.__numbers2)
return result
def sub(self):
result = float(self.__numbers1) - float(self.__numbers2)
return result
def div(self):
result = float(self.__numbers1) / float(self.__numbers2)
return result
def mul(self):
result = float(self.__numbers1) * float(self.__numbers2)
return result
def getresult(self):
return self.__result
#Mainprogramm
app = wx.PySimpleApp()
frame = mainframe(None, -1, "Taschenrechner")
p = panel(frame)
frame.Show()
p.Show()
app.MainLoop()