So habe mal versucht das was mir gesagt wurde umzusetzen, soweit ich es verstanden habe:
Code: Alles auswählen
#!/usr/bin/env python
# -*- coding: utf-8 -*-
#++++++++++++++++++++++++++++#
# Application: OOPCalcer.py
# Author: Dr.Miles
# Date: 2009/01/23
# My Python: Python 2.5.2 (r252:60911, Jul 31 2008, 17:31:22) [GCC 4.2.3 (Ubuntu 4.2.3-2ubuntu7)] on linux2
version = "OOPCalcer Version 0.1 - "
#
# Description:
#
#++++++++++++++++++++++++++++#
#
#++++++++++++++++++++++++++++#
#---imports---#
import easygui #http://easygui.sourceforge.net
from sys import exit
from string import replace
class Calculator :
def addition(self,operand1,operand2) :
return operand1 + operand2
def subtraction(self,operand1,operand2) :
return operand1 - operand2
def multiplication(self,operand1,operand2) :
return operand1 * operand2
def division(self,operand1,operand2) :
return operand1 / operand2
Calcer = Calculator()
class GUI :
def __init__(self) :
while True :
self.choice = easygui.buttonbox(msg='Welche Art der Berechnung möchtest du durchführen?', title=version, choices=\
('Addition', 'Subtraktion', 'Division','Multiplikation','Programm beenden'), image=None)
if self.choice == "Addition" :
self.addition()
elif self.choice == "Subtraktion" :
self.subtraction()
elif self.choice == "Division" :
self.division()
elif self.choice == "Multiplikation" :
self.multiplication()
else :
exit(0)
def addition(self):
self.version = version + "Addition" #version = version + "Addition"
self.msg = "Bitte untenstehende Felder ausfüllen"
numbers = easygui.multenterbox(self.msg,self.version, ("1.Summand","2.Summand"))
self.summary = Calcer.addition(float(replace(numbers[0],",",".")), float(replace(numbers[1],",",".")))
easygui.msgbox(msg='Das Ergebnis von %s und %s ist %10.2f'%(numbers[0], numbers[1]\
,self.summary), title=version , ok_button='OK', image=None)
def subtraction(self):
self.version = version + "Subtraktion"
self.msg = "Bitte untenstehende Felder ausfüllen"
numbers = easygui.multenterbox(self.msg,self.version, ("Minuend","Subtrahend"))
self.summary = Calcer.subtraction(float(replace(numbers[0],",",".")), float(replace(numbers[1],",",".")))
easygui.msgbox(msg='Die Differenz von %s weniger %s ist %10.2f'%(numbers[0], numbers[1]\
,self.summary), title=version , ok_button='OK', image=None)
def division(self):
self.version = version + "Division"
self.msg = "Bitte untenstehende Felder ausfüllen"
numbers = easygui.multenterbox(self.msg,self.version, ("Dividend","Divisor"))
self.summary = Calcer.division(float(replace(numbers[0],",",".")), float(replace(numbers[1],",",".")))
easygui.msgbox(msg='Der Quotient von %s durch %s ist %10.2f'%(numbers[0], numbers[1]\
,self.summary), title=version , ok_button='OK', image=None)
def multiplication(self):
self.version = version + "Multiplikation"
self.msg = "Bitte untenstehende Felder ausfüllen"
numbers = easygui.multenterbox(self.msg,self.version, ("1.Faktor","2.Faktor"))
self.summary = Calcer.multiplication(float(replace(numbers[0],",",".")), float(replace(numbers[1],",",".")))
easygui.msgbox(msg='Der Produkt von %s mal %s ist %10.2f'%(numbers[0], numbers[1]\
,self.summary), title=version , ok_button='OK', image=None)
GUI = GUI()
GUI()
Ich habe zuerst version = version + "Addition" versucht, bekam aber eine
UnboundLocalError: local variable 'version' referenced before assignment-Exception.
Hat bestimmt was mit namespaces zu tuen, aber was genau?
Ist version in dem moment wo ich sie anlege lokal und er sucht nicht mehr nach der globalen?
PS: Den redundaten teil vom Code kann ich bestimmt mit Vererbung entfernen oder?
Dacht ich mir, aber hab nur kurz was zu dem Thema gelesen...
Gruß
Dr.Miles
www.i2p2.de <--- sehr interressantes Anonymisierungsprojekt.
www.schaeuble-wegtreten.de <--- Petition gegen Schäuble