NameError: name 's2gradefloat' is not defined
NameError: name 's2gradefloat' is not defined
我是 python 的新手,我正在尝试使用 tkinter 创建一个 GUI 来计算您在期末考试中获得特定成绩所需的分数。这是我目前所拥有的:
from tkinter import *
root = Tk()
root.geometry("600x550+300+50")
root.title("")
backgroundcolor = '#%02x%02x%02x' %(0,0,0)
root.config(background= backgroundcolor)
#------------------Calculation----------------------#
def crscore():
s2grade = float(s2gradef.get())
dgrade = float(dgradef.get())
rscore = (100*dgrade - (100 - 50)* s2grade ) / 50
rscorelabel=Label(root,text="Required Test Score: %s" %rscore).place(x=250,y=370)
return
#------------------Labels----------------------#
Label1=Label(root,
text='Final Exam Calclulator',
fg='white',
bg='black',
font= "a 17 bold").place(x=170,y=20)
Label3=Label(root,
text='Enter Current Semester 2 Grade',
fg='white',
bg='black',
font= "a 12 bold").place(x=100,y=100)
Label4=Label(root,
text='Enter Desired Final Grade',
fg='white',
bg='black',
font= "a 12 bold").place(x=100,y=165)
#------------------EntryBoxes----------------------#
s2grade = StringVar()
dgrade = StringVar()
s2grade = Entry(root,textvariable=s2grade).place(x=395,y=100)
dgrade = Entry(root,textvariable=dgrade).place(x=360,y=165)
#------------------Button----------------------#
button1=Button(root,text='Calculate Required Score',command=crscore).place(x=250,y=240)
root.mainloop()
但不断出现错误:
Traceback (most recent call last):
File "C:\Python34\lib\tkinter\__init__.py", line 1538, in __call__
return self.func(*args)
File "E:/FinalProject.py", line 10, in crscore
s2grade = float(s2gradefloat.get())
NameError: name 's2gradefloat' is not defined
我意识到我可能在这里犯了很多错误。有人可以帮忙吗?
在你的计算函数中:
#------------------Calculation----------------------#
def crscore():
s2grade = float(s2gradef.get())
dgrade = float(dgradef.get())
s2gradefloat is not defined ---
基本上,您是想从我假设的输入框中获取值吗?
s2grade = Entry(root,textvariable=s2grade).place(x=395,y=100)
所以你应该使用 s2grade.get()
但话又说回来——这会导致另一个错误——你的变量在赋值前被引用。
另一个快速说明:
你在本地重复使用变量名,在你的计算函数内部和外部,这不是一个好的做法
s2grade = StringVar()
dgrade = StringVar()
s2grade = Entry(root,textvariable=s2grade).place(x=395,y=100)
dgrade = Entry(root,textvariable=dgrade).place(x=360,y=165)
和
def crscore():
s2grade = float(s2gradef.get())
dgrade = float(dgradef.get())
rscore = (100*dgrade - (100 - 50)* s2grade ) / 50
rscorelabel=Label(root,text="Required Test Score: %s" %rscore).place(x=250,y=370)
return
尽量保持变量的唯一性,这样可以省去很多麻烦。
例如:
#------------------Calculation----------------------#
def crscore():
s2grad = float(s2grade.get())
dgrad = float(dgrade.get())
print(s2grad)
print(dgrad)
rscore = (100*dgrad - (100 - 50)* s2grad ) / 50
rscorelabel=Label(root,text="Required Test Score: %s" %rscore).place(x=250,y=370)
return
#------------------EntryBoxes----------------------#
s2grade = StringVar()
dgrade = StringVar()
Entry(root, textvariable=s2grade).place(x=395, y=100)
Entry(root, textvariable=dgrade).place(x=360, y=165)
#removed assigned variable names to the Entry widgets, as they are not being
#used " There's no point in assigning variables to
#Entry(...).place(...) always returns None" as mentioned by @Brian Oakley
我是 python 的新手,我正在尝试使用 tkinter 创建一个 GUI 来计算您在期末考试中获得特定成绩所需的分数。这是我目前所拥有的:
from tkinter import *
root = Tk()
root.geometry("600x550+300+50")
root.title("")
backgroundcolor = '#%02x%02x%02x' %(0,0,0)
root.config(background= backgroundcolor)
#------------------Calculation----------------------#
def crscore():
s2grade = float(s2gradef.get())
dgrade = float(dgradef.get())
rscore = (100*dgrade - (100 - 50)* s2grade ) / 50
rscorelabel=Label(root,text="Required Test Score: %s" %rscore).place(x=250,y=370)
return
#------------------Labels----------------------#
Label1=Label(root,
text='Final Exam Calclulator',
fg='white',
bg='black',
font= "a 17 bold").place(x=170,y=20)
Label3=Label(root,
text='Enter Current Semester 2 Grade',
fg='white',
bg='black',
font= "a 12 bold").place(x=100,y=100)
Label4=Label(root,
text='Enter Desired Final Grade',
fg='white',
bg='black',
font= "a 12 bold").place(x=100,y=165)
#------------------EntryBoxes----------------------#
s2grade = StringVar()
dgrade = StringVar()
s2grade = Entry(root,textvariable=s2grade).place(x=395,y=100)
dgrade = Entry(root,textvariable=dgrade).place(x=360,y=165)
#------------------Button----------------------#
button1=Button(root,text='Calculate Required Score',command=crscore).place(x=250,y=240)
root.mainloop()
但不断出现错误:
Traceback (most recent call last):
File "C:\Python34\lib\tkinter\__init__.py", line 1538, in __call__
return self.func(*args)
File "E:/FinalProject.py", line 10, in crscore
s2grade = float(s2gradefloat.get())
NameError: name 's2gradefloat' is not defined
我意识到我可能在这里犯了很多错误。有人可以帮忙吗?
在你的计算函数中:
#------------------Calculation----------------------#
def crscore():
s2grade = float(s2gradef.get())
dgrade = float(dgradef.get())
s2gradefloat is not defined ---
基本上,您是想从我假设的输入框中获取值吗?
s2grade = Entry(root,textvariable=s2grade).place(x=395,y=100)
所以你应该使用 s2grade.get()
但话又说回来——这会导致另一个错误——你的变量在赋值前被引用。
另一个快速说明:
你在本地重复使用变量名,在你的计算函数内部和外部,这不是一个好的做法
s2grade = StringVar()
dgrade = StringVar()
s2grade = Entry(root,textvariable=s2grade).place(x=395,y=100)
dgrade = Entry(root,textvariable=dgrade).place(x=360,y=165)
和
def crscore():
s2grade = float(s2gradef.get())
dgrade = float(dgradef.get())
rscore = (100*dgrade - (100 - 50)* s2grade ) / 50
rscorelabel=Label(root,text="Required Test Score: %s" %rscore).place(x=250,y=370)
return
尽量保持变量的唯一性,这样可以省去很多麻烦。
例如:
#------------------Calculation----------------------#
def crscore():
s2grad = float(s2grade.get())
dgrad = float(dgrade.get())
print(s2grad)
print(dgrad)
rscore = (100*dgrad - (100 - 50)* s2grad ) / 50
rscorelabel=Label(root,text="Required Test Score: %s" %rscore).place(x=250,y=370)
return
#------------------EntryBoxes----------------------#
s2grade = StringVar()
dgrade = StringVar()
Entry(root, textvariable=s2grade).place(x=395, y=100)
Entry(root, textvariable=dgrade).place(x=360, y=165)
#removed assigned variable names to the Entry widgets, as they are not being
#used " There's no point in assigning variables to
#Entry(...).place(...) always returns None" as mentioned by @Brian Oakley