Ich habe folgendes problem:
Ich schreibe zurzeit an einem bruchrechner und bekommen andauernd folgenden fehler:
Code: Alles auswählen
Exception in Tkinter callback
Traceback (most recent call last):
File "C:\Python26\lib\lib-tk\Tkinter.py", line 1410, in __call__
return self.func(*args)
File "C:\Users\Alexander\Desktop\bruchrechner\Bruchrechner_GUI.py", line 86, in rechneJimy
self.bruch.rechne()
File "C:\Users\Alexander\Desktop\bruchrechner\bruchrechner.py", line 20, in rechne
Fraction((self.zaehler1),(self.nenner1))+(Fraction((self.zaehler2),(self.nenner2)))
File "C:\Python26\lib\fractions.py", line 99, in __new__
numerator = operator.index(numerator)
TypeError: object cannot be interpreted as an indexMein code schaut wie folgt aus :
Das GUI:
Code: Alles auswählen
from Tkinter import *
from bruchrechner import *
class Bruchrechner_GUI:
def __init__(self):
self.bruch=bruchrechner()
#######___Widgets erstellen anfang___####
winow=Tk()
self.operatorgui=StringVar()
winow.title("Bruchrechner")
winow.geometry("300x200")
Hans1=Label(winow,text="Bruch 1")
Hans2=Label(winow,text="Bruch 2")
Hans3=Label(winow,text="Ergebnis")
Hans4=Label(winow,font=("calibri 27 bold") ,textvariable=self.operatorgui)
self.operatorgui.set("+")
Hans5=Label(winow,text="=")
self.Zahl1=DoubleVar()
self.Zahl1.set(0)
enZahl1=Entry(winow,width=10, textvariable=self.Zahl1)
self.Zahl2=DoubleVar()
self.Zahl2.set(0)
enZahl2=Entry(winow,width=10, textvariable=self.Zahl2)
self.Zahl3=DoubleVar()
self.Zahl3.set(0)
enZahl3=Entry(winow,width=10, textvariable=self.Zahl3)
self.Zahl4=DoubleVar()
self.Zahl4.set(0)
enZahl4=Entry(winow,width=10, textvariable=self.Zahl4)
self.Text1=DoubleVar()
self.Text1.set("0")
Hans666=Label(winow,textvariable=self.Text1)
self.Text2=DoubleVar()
self.Text2.set("0")
Hans777Jacky=Label(winow,textvariable=self.Text2)
JimsKnopf1=Button(winow,text="+",font=("calibri 17 bold") , width=2,height=1 , command=self.mplus)
JimsKnopf2=Button(winow,text="-",font=("calibri 17 bold") ,width=2,height=1 , command=self.mminus)
JimsKnopf3=Button(winow,text="*",font=("calibri 17 bold") ,width=2,height=1 , command=self.mmulti)
JimsKnopf4=Button(winow,text="/",font=("calibri 17 bold") ,width=2,height=1 , command=self.mslush)
JimsKnopf5=Button(winow,text="=",font=("calibri 17 bold"), width=2, height=1, command=self.rechneJimy)
labrelief=Label(winow,relief=SUNKEN,width=180,height=50)
#######___Widgets erstellen ende____#####
#######___Widgets platzieren anfang___####
Hans1.place(x=20, y=10)
Hans2.place(x=130, y=10)
Hans3.place(x=220, y=10)
enZahl1.place(x=20, y=40)
enZahl2.place(x=130, y=40)
Hans666.place(x=220, y=40)
enZahl3.place(x=20, y=70)
enZahl4.place(x=130, y=70)
Hans777Jacky.place(x=220, y=70)
Hans5.place(x=200, y=54)
Hans4.place(x=93, y=39)
JimsKnopf1.place(x=35, y=140)
JimsKnopf2.place(x=85, y=140)
JimsKnopf3.place(x=135, y=140)
JimsKnopf4.place(x=185, y=140)
JimsKnopf5.place(x=235, y=140)
#labrelief.place(x=0, y=149)
winow.mainloop()
def mplus(self):
self.bruch.setoperator(1)
self.operatorgui.set("+")
def mminus(self):
self.bruch.setoperator(2)
self.operatorgui.set("-")
def mmulti(self):
self.bruch.setoperator(3)
self.operatorgui.set("*")
def mslush(self):
self.bruch.setoperator(4)
self.operatorgui.set("/")
def rechneJimy(self):
self.bruch.setzaehler1(self.Zahl1)
self.bruch.setzaehler2(self.Zahl3)
self.bruch.setnenner1(self.Zahl2)
self.bruch.setnenner2(self.Zahl4)
self.bruch.rechne()
if __name__ == '__main__':
dasFenster = Bruchrechner_GUI()
mainloop()
Die klassendatei:
Code: Alles auswählen
from fractions import *
class bruchrechner:
def __init__(self):
self.op=1
def setzaehler1(self,z1):
self.zaehler1=z1
def setzaehler2(self,z2):
self.zaehler2=z2
def setnenner1(self,n1):
self.nenner1=n1
def setnenner2(self,n2):
self.nenner2=n2
def setoperator(self,op):
self.op=op
def rechne(self):
if self.op==1:
Fraction((self.zaehler1),(self.nenner1))+(Fraction((self.zaehler2),(self.nenner2)))
return
elif self.op==2:
Fraction((self.zaehler1),(self.nenner1))-(Fraction((self.zaehler2),(self.nenner2)))
return
elif self.op==3:
Fraction((self.zaehler1),(self.nenner1))*(Fraction((self.zaehler2),(self.nenner2)))
return
else:
Fraction((self.zaehler1),(self.nenner1))/(Fraction((self.zaehler2),(self.nenner2)))
return
hoffe man kann mir hier helfen
mfG. NeverGod
p.s. Ich bin mir sicher ich finde das noch herraus aber wenn mir jemand noch sagen könnte wie ich anschließend x und y aus Fraction(x,y) auslesen kann wäre ich euch sehr dankbar.
