Python 2.7 Tkinter变量类型不兼容

时间:2015-12-08 15:53:30

标签: python-2.7 tkinter

我正在尝试使用输入窗口中的值作为数值,但它不允许我根据程序(即使我只是输入数字)将“字符串”转换为浮点值。 / p>

简短的例子:

输入来自:

etiquette5=Label(eqGroup,text="Insert value for c")
etiquette5.pack(padx=10,pady=5,expand=True,fill=BOTH)
input3=Entry(eqGroup,width=10)
input3.pack()

inputList[0]=input1.get() #To be able to move the inputs from this method I put them into a global list

输入用于:

def equationSolver(self): #For doing the math shenanigans
    a=float(inputList[0])#Error here. It is unable to convert the strings that it takes in via the input to float values
    b=float(inputList[1])#Error here. It is unable to convert the strings that it takes in via the input to float values
    c=float(inputList[2])#Error here. It is unable to convert the strings that it takes in via the input to float values

    X1=(-b/2)+(sqrt(pow(b/2,2)-c))
    X2=(-b/2)-(sqrt(pow(b/2,2)-c))

    globalList[0]=X1 #Once again, putting them into a global list for movement purposes
    globalList[1]=X2

错误图片enter image description here

您可以在此处找到完整代码:http://pastebin.com/1Umug0ms

关于我如何做到这一点的任何想法?

先谢谢,Staggen

1 个答案:

答案 0 :(得分:1)

您在用户实际输入数据之前定义inputList。考虑这行代码:

inputList[0]=input1.get() 

这会将inputList[0]设置为该时刻中条目小部件中的值。如果在初始化函数(在显示UI之前调用的任何函数)中完成此操作,则该值将为空。当您稍后尝试使用它时,您将收到错误,因为空字符串不是有效数字。

您需要延迟获取值,直到您准备好使用它们为止。