【问题标题】:Tkinter convert entry.get() to integer problemTkinter 将 entry.get() 转换为整数问题
【发布时间】:2021-04-09 17:23:12
【问题描述】:

我正在用 Tkinter 编写一个程序来计算风值。需要 Rwy Heading、Wind Direction 和 Wind Speed 来计算逆风、顺风或侧风风以及计算出的相关风速。

我收到此错误:

Traceback (most recent call last):
  File "C:\Users\altug\Desktop\PROJECTS\ÇALIŞMA.py", line 40, in <module>
    rwy_var= int(rwy)
ValueError: invalid literal for int() with base 10: ''

我都尝试过 IntVar() 和 int(str) 方法将字符串转换为整数,但没有解决问题。 您可以在下面找到我的代码:

ent1 = Entry(root)
ent1.grid(row = 0, column = 1)
ent2 = Entry(root)
ent2.grid(row = 1, column = 1)
ent3 = Entry(root)
ent3.grid(row = 2, column = 1)




rwy = ent1.get()
wind_direction = ent2.get()
wind_speed = ent3.get()

rwy_var= IntVar()
wind_direction_var= IntVar()
wind_speed_var = IntVar()


rwy_var= int(rwy)
wind_direction_var= int(wind_direction)
wind_speed_var = int(wind_speed)

x = rwy_var - wind_direction_var
radx = math.radians(x)
sinx = math.sin(radx)
cosx = math.cos(radx)




def htwind():
    txt.delete(0.0, "end")
    b = rwy_var + 90
    a = rwy_var - 90
    if b > 360:
        b -= 360
    elif a <0:
        a+= 360
        if x == abs(90):
            result = 0
            txt.insert(0.0, result +'\n')
        elif a <= wind_direction_var or  wind_direction_var<= b :
            sh = wind_speed_var * cosx
            result = "Headwind"+ " " + round(abs(sh))+ " " + "kt"
            txt.insert(0.0, result +'\n')
        elif a >= wind_direction_var or  wind_direction_var >= b :
            st = wind_speed_var * cosx
            result = "Tailwind"+ " " + round(abs(st))+ " " + "kt"
            txt.insert(0.0, result +'\n')
        return ""
        

def xwind():
    txt.delete(0.0, "end")
    c=rwy_var-180
    d= rwy_var + 180
    if d > 360: 
        d -= 360
    elif c<0:
        c+= 360
        if x == 0 or x == abs(180) or y == 0 or y == abs(180):
            print("0")
        elif c< wind_direction_var:
            sxwl = wind_speed_var * sinx
            rslt = "L"+""+round(abs(sxwl))+""+"kt"
            txt.insert(0.0, rslt +'\n')
        elif wind_direction_var<d:
            sxwr = wind_speed_var * sinx
            rslt = "R"+""+round(abs(sxwr))+""+"kt"
            txt.insert(0.0, rslt +'\n')
        return ""
        




txt = Text(root, width=6, height=2, wrap =WORD)
txt.grid(row =1, column = 1)

button_1 =Button(root, text = "search", command=lambda:[htwind(),xwind()])
button_1.grid(row =0, column = 5)

我的错误是什么?

提前致谢。

【问题讨论】:

    标签: python-3.x user-interface tkinter tkinter-entry


    【解决方案1】:

    IntVar 的特殊之处在于它不能直接转换为 int。要获取它的 int 值,请执行

    rwy_var = rwy.get()
    

    【讨论】:

    • 不幸的是,它没有成功。 python 仍然将 rwy_var 作为字符串,而不是整数。
    • 在第 40 行使用之前尝试打印一些关于 rwy 的信息,例如,print(type(rwy), rwy)
    • IntVar 并不特别。它是一个对象,而不是一个数字。它不是为转换而设计的。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-05-05
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-07-31
    相关资源
    最近更新 更多