maverick
maverick

Reputation: 1

Tkinter convert entry.get() to integer problem

I am coding a program with Tkinter to calculate wind values. It takes Rwy Heading, Wind Direction and Wind Speed to calculate the wind whether headwind, tailwind or crosswind with the calculated relevant wind speed.

I get this error:

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: ''

I both tried IntVar() and int(str) method to convert string into integer but it didn't sort out the problem. Below you can find my code:

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)

What is my mistake ?

Thanks in advance.

Upvotes: 0

Views: 42

Answers (1)

Tok1
Tok1

Reputation: 111

The IntVar is special in that it can't be directly converted to an int. To get its int value, do

rwy_var = rwy.get()

Upvotes: 0

Related Questions