object cannot be interpreted as an index ?
Verfasst: Freitag 26. August 2011, 16:27
guten tag liebe community,
Ich habe folgendes problem:
Ich schreibe zurzeit an einem bruchrechner und bekommen andauernd folgenden fehler:
Dies geschieht wenn ich den berechnungsprozess einleite.
Mein code schaut wie folgt aus :
Das GUI:
(Bitte nicht von den Variablennamen ablenken lassen...)
Die klassendatei:
Ich stehe momentan ziehmlich auf dem schlauch weil ich ehrlich nicht weiß was diesen fehler verursacht.
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.
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.