简体   繁体   中英

Error when trying to do math on integers provided in an Entry

Im trying to create a calculator for grades, taking input for the user for the weight of the categories, and their mark over total mark. I then want to output their grade (in %). However, upon trying to get the text in the box, I receive an error saying my entry is not defined.

Error Message: https://gyazo.com/1d9c5a086a7d369b69500d5399d4b08e

take a look:

from Tkinter import *
import random

player = 1
count=0

menu=Tk()

menu.wm_title("Percentage Calculator")

def Calculate():

    global  a1
    global  a2

    global  b1
    global  b2

    global  c1
    global  c2

    global  d1
    global  d2

    tval=int(tvalue.get())
    aval=int(avalue.get())
    cval=int(cvalue.get())
    kval=int(kvalue.get())

    a1v=float(a1.get())
    a2v=float(a2.get())

    total_t=(((a1v/a2v)*100)/tval)

    b1v=float(bl.get())
    b2v=float(b2.get())

    total_a=(((b1v/b2v)*100)/aval)

    c1v=float(cl.get())
    c2v=float(c2.get())

    total_c=(((c1v/c2v)*100)/cval)

    d1v=float(dl.get())
    d2v=float(d2.get())

    total_k=(((d1v/d2v)*100)/kval)

menutext=Label(text="Enter Percentages:",font="Arial 15")
menutext.grid(row=0,column=0,columnspan=4,sticky="NS,WE")

t=Label(text="T",font="Arial 15")
t.grid(row=1,column=0,sticky="NS,WE")

a=Label(text="A",font="Arial 15")
a.grid(row=1,column=1,sticky="NS,WE")

c=Label(text="C",font="Arial 15")
c.grid(row=1,column=2,sticky="NS,WE")

k=Label(text="K",font="Arial 15")
k.grid(row=1,column=3,sticky="NS,WE")

tvalue=Entry(font="Arial 15")
tvalue.grid(row=2,column=0,sticky="NS,WE")

avalue=Entry(font="Arial 15")
avalue.grid(row=2,column=1,sticky="NS,WE")

cvalue=Entry(font="Arial 15")
cvalue.grid(row=2,column=2,sticky="NS,WE")

kvalue=Entry(font="Arial 15")
kvalue.grid(row=2,column=3,sticky="NS,WE")

calcbutton=Button(text=" Calculate ",font="Arial 15",command=Calculate)
calcbutton.grid(row=10,column=0,columnspan=4,sticky="NS,WE")

menutext2=Label(text="Enter Marks:",font="Arial 15")
menutext2.grid(row=3,column=0,columnspan=4,sticky="NS,WE")

a1=Entry(font="Arial 15")
a1.grid(row=4,column=0,sticky="NS,WE")

a2=Entry(font="Arial 15")
a2.grid(row=4,column=1,sticky="NS,WE")

b1=Entry(font="Arial 15")
b1.grid(row=4,column=2,sticky="NS,WE")

b2=Entry(font="Arial 15")
b2.grid(row=4,column=3,sticky="NS,WE")

c1=Entry(font="Arial 15")
c1.grid(row=5,column=0,sticky="NS,WE")

c2=Entry(font="Arial 15")
c2.grid(row=5,column=1,sticky="NS,WE")

d1=Entry(font="Arial 15")
d1.grid(row=5,column=2,sticky="NS,WE")

d2=Entry(font="Arial 15")
d2.grid(row=5,column=3,sticky="NS,WE")


def AnswerDisplay():

    ##this is not complete yet, ignore

    answerlabel=Label(text="Results Are...",font="Arial 15")
    answerlabel.grid(row=7,column=0,columnspan=4,sticky="NS,WE")

    a1ans=Label(text="null",font="Arial 20")
    a1ans.grid(row=8,column=0,sticky="NS,WE")

    b1ans=Label(text="null",font="Arial 20")
    b1ans.grid(row=8,column=1,sticky="NS,WE")

    c1ans=Label(text="null",font="Arial 20")
    c1ans.grid(row=8,column=2,sticky="NS,WE")

    d1ans=Label(text="null",font="Arial 20")
    d1ans.grid(row=8,column=3,sticky="NS,WE")


menu.mainloop()

You mixed up a lowercase "L" with the numeral 1 in this line:

b1v=float(bl.get())

It needs to be:

b1v=float(b1.get())

Same thing in other places too.

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM