TypeError:'Instance'和'Int'不支持的操作数类型

时间:2015-12-07 21:10:50

标签: python-2.7 tkinter

我正在尝试在Python 2.7中应用PQ公式。

我将在这里发布一小段代码(问题似乎来自哪里),我将链接长版本作为粘贴板链接。

etiquette2=Label(eqGroup,text="ax^2 + bx + c")
etiquette2.pack(padx=10,pady=10,expand=True,fill=BOTH)
etiquette3=Label(eqGroup,text="Please enter a value for a")
etiquette3.pack(padx=10,pady=10,expand=True,fill=BOTH)
input1=Entry(eqGroup,width=10)
input1.pack()
etiquette4=Label(eqGroup,text="Please enter a value for b")
etiquette4.pack(padx=10,pady=10,expand=True,fill=BOTH)
input2=Entry(eqGroup,width=10)
input2.pack()
etiquette5=Label(eqGroup,text="Please enter a value for c")
etiquette5.pack(padx=10,pady=10,expand=True,fill=BOTH)
input3=Entry(eqGroup,width=10)
input3.pack()

a=input1.get()
b=input2.get()
c=input3.get()

a=DoubleVar() #Here I tried to re-type them all to a Float value, but it didn't work apparently
b=DoubleVar()
c=DoubleVar()

temp1=pow(b/2,2) #I tried to do it in steps
temp1=DoubleVar() #And to have the value conversion both before and after the assignment

temp2=sqrt(temp1-c) #But no cookies for me :/
temp2=DoubleVar()

X1=(-b/2)+temp1 #I tried to convert 
X2=(-b/2)-(sqrt(pow(b/2,2)-c)) #This is the PQ formula straight up, which does not work either

指向整个事物的粘贴板链接:http://pastebin.com/Y77fHwmk

(那里的文字是瑞典语,因为我来自瑞典。但它只在少数几个地方出现,反正与问题无关)

如果您有任何想法,请告诉我^^我现在还没有设法解决这个问题太久了。到处头疼:/

回溯就在这里:

Traceback is here

谢谢你们:)

2 个答案:

答案 0 :(得分:2)

唯一重要的是这些:

b=DoubleVar()
temp1=pow(b/2,2)

那不行。什么是DoubleVar?如果它不是int或float或double,那么你将度过一段美好时光。

b=DoubleVar()

如果这是您的意图,那么这不是您投射变量的方式。

相反,尝试这样的事情:

b = input2.get()
b = float(b)

或者一步到位:

b = float(input2.get())

答案 1 :(得分:1)

代码中的这些行没有意义:

a=input1.get()
b=input2.get()
c=input3.get()

a=DoubleVar() #Here I tried to re-type them all to a Float value, but it didn't work apparently
b=DoubleVar()
c=DoubleVar()

您获得aband c from input form but you throw tehm away and replace them with instances of DoubleVar()`的值。

而是试试这个:

a = float(input1.get())
b = float(input2.get())
c = float(input3.get())

并删除这些行:

a=DoubleVar() 
b=DoubleVar()
c=DoubleVar()