简单的数学测验
Simple math quiz
我的简单数学测验有错误,它显示 B 变量未定义。我尝试将其定义为 stringvar 但仍然有 error.Where 我应该定义变量吗?我的总计是否是让它继续计算最后一个界面的正确方法,结果 box.Can 有人展示了示例解决它。
import Tkinter
import tkMessageBox
#easybox1
EasyBox1 = Tkinter.Tk()
EasyBox1.geometry("250x200")
EasyBox1.title("Quesion 1")
Tkinter.Label (EasyBox1, text="answer:").pack()
answr1 = Tkinter.Entry (EasyBox1)
answr1.pack()
LabelName2 = Tkinter.Label (EasyBox1, text="State the number of edges in a cube")
LabelName2.grid(row=1,column=0)
LabelName2.pack()
def next1():
total = 0
if not answr1.get():
tkMessageBox.showerror('no answer')
elif answr1.get() == 8 :
total = total + 1
EasyBox1.withdraw()
EasyBox2.deiconify()
elif answr1.get() != 8:
total = total
EasyBox1.withdraw()
EasyBox2.deiconify()
return
EasyBox2 = Tkinter.Tk()
EasyBox2.geometry("250x200")
EasyBox2.title("Quesion 2")
Tkinter.Label (EasyBox2, text="answer:").pack()
answr2 = Tkinter.Entry (EasyBox2)
answr2.pack()
LabelName2 = Tkinter.Label (EasyBox2, text="What is the place value of the digit 4 in 76421?")
LabelName2.grid(row=1,column=0)
LabelName2.pack()
LabelName2 = Tkinter.Label (EasyBox2, text="A.Thousands B.Hundreds C.Ones D.Tens")
LabelName2.grid(row=1,column=0)
LabelName2.pack()
def mark():
total = 0
if not answr2.get():
tkMessageBox.showerror('no answer')
elif answr2.get() == B or b :
total = total + 1
EasyBox1.withdraw()
ResultBox.deiconify()
elif answr2.get() != B :
total = total
EasyBox1.withdraw()
ResultBox.deiconify()
return
EasyBox2.withdraw()
total = 0
ResultBox = Tkinter.Tk()
ResultBox.geometry("320x260")
ResultBox.title("Results")
LabelName5 = Tkinter.Label (ResultBox, text="Marks : "+`total`, font=("Impact",20))
LabelName5.grid(row=2,column=0)
ResultBox.withdraw()
Tkinter.Button (EasyBox1, text="Next", command=next1).pack()
Tkinter.Button (EasyBox2, text="result", command=mark).pack()
EasyBox1.mainloop()
如果您想将答案与字符串 'B' 或 'b' 进行比较,只需引用它们
只需在 "b"
和 "B"
两边加上引号即可:
def mark():
total = 0
if not answr2.get():
tkMessageBox.showerror('no answer')
elif answr2.get() in ["B", "b"]:
total = total + 1
EasyBox1.withdraw()
ResultBox.deiconify()
else:
total = total
EasyBox1.withdraw()
ResultBox.deiconify()
另外,现在无法与or "b"
进行比较,您可以将其更改为
if answr2.get() in ["B", "b"]:
或
if answr2.get().upper() == "B":
我的简单数学测验有错误,它显示 B 变量未定义。我尝试将其定义为 stringvar 但仍然有 error.Where 我应该定义变量吗?我的总计是否是让它继续计算最后一个界面的正确方法,结果 box.Can 有人展示了示例解决它。
import Tkinter
import tkMessageBox
#easybox1
EasyBox1 = Tkinter.Tk()
EasyBox1.geometry("250x200")
EasyBox1.title("Quesion 1")
Tkinter.Label (EasyBox1, text="answer:").pack()
answr1 = Tkinter.Entry (EasyBox1)
answr1.pack()
LabelName2 = Tkinter.Label (EasyBox1, text="State the number of edges in a cube")
LabelName2.grid(row=1,column=0)
LabelName2.pack()
def next1():
total = 0
if not answr1.get():
tkMessageBox.showerror('no answer')
elif answr1.get() == 8 :
total = total + 1
EasyBox1.withdraw()
EasyBox2.deiconify()
elif answr1.get() != 8:
total = total
EasyBox1.withdraw()
EasyBox2.deiconify()
return
EasyBox2 = Tkinter.Tk()
EasyBox2.geometry("250x200")
EasyBox2.title("Quesion 2")
Tkinter.Label (EasyBox2, text="answer:").pack()
answr2 = Tkinter.Entry (EasyBox2)
answr2.pack()
LabelName2 = Tkinter.Label (EasyBox2, text="What is the place value of the digit 4 in 76421?")
LabelName2.grid(row=1,column=0)
LabelName2.pack()
LabelName2 = Tkinter.Label (EasyBox2, text="A.Thousands B.Hundreds C.Ones D.Tens")
LabelName2.grid(row=1,column=0)
LabelName2.pack()
def mark():
total = 0
if not answr2.get():
tkMessageBox.showerror('no answer')
elif answr2.get() == B or b :
total = total + 1
EasyBox1.withdraw()
ResultBox.deiconify()
elif answr2.get() != B :
total = total
EasyBox1.withdraw()
ResultBox.deiconify()
return
EasyBox2.withdraw()
total = 0
ResultBox = Tkinter.Tk()
ResultBox.geometry("320x260")
ResultBox.title("Results")
LabelName5 = Tkinter.Label (ResultBox, text="Marks : "+`total`, font=("Impact",20))
LabelName5.grid(row=2,column=0)
ResultBox.withdraw()
Tkinter.Button (EasyBox1, text="Next", command=next1).pack()
Tkinter.Button (EasyBox2, text="result", command=mark).pack()
EasyBox1.mainloop()
如果您想将答案与字符串 'B' 或 'b' 进行比较,只需引用它们
只需在 "b"
和 "B"
两边加上引号即可:
def mark():
total = 0
if not answr2.get():
tkMessageBox.showerror('no answer')
elif answr2.get() in ["B", "b"]:
total = total + 1
EasyBox1.withdraw()
ResultBox.deiconify()
else:
total = total
EasyBox1.withdraw()
ResultBox.deiconify()
另外,现在无法与or "b"
进行比较,您可以将其更改为
if answr2.get() in ["B", "b"]:
或
if answr2.get().upper() == "B":