我正在创建一个教学工具,帮助学生记住电阻器颜色代码。我正在使用Tkinter进行GUI。这是我的代码中有问题的功能:
score = 0
def nextResistor():
global score
global timeLeft
x = random.randint(0,9)
y = random.randint(0,9)
z = random.randint(0,9)
t = random.randint(0,2)
xcolor = getColor(x)
ycolor = getColor(y)
zcolor = getColor(z)
tcolor, tol = getTolerance(t)
if timeLeft > 0:
entryBox1.focus_set()
entryBox2.focus_set()
entryBox3.focus_set()
entryBox4.focus_set()
xguess = entryBox1.get()
yguess = entryBox2.get()
zguess = entryBox3.get()
tguess = entryBox4.get()
# Show the label
if xguess == x and yguess == y and zguess == z and tguess == tol:
score = score + 1
else:
score += 0
print(str(xguess), str(yguess), str(zguess), str(tguess))
entryBox1.delete(0, Tkinter.END)
entryBox2.delete(0, Tkinter.END)
entryBox3.delete(0, Tkinter.END)
entryBox4.delete(0, Tkinter.END)
rlabel.config(text=xcolor + " " + ycolor + " " + zcolor + " " + tcolor)
scoreLabel.config(text="Score: " + str(score))
print(str(score))
为了澄清,我的函数getColor()
只返回一个与给定的整数参数对应的字符串。 getTolerance()
做同样的事情,除了它还返回一个整数tol
。即使用户输入是正确的猜测,即条件为真,分数值也不会改变。我正在打印猜测和分数以帮助我调试过程,但我没有运气。以下是我输出的示例:
我怀疑这很简单,但我正在试图找到它。 Tkinter中的主循环基本上只是重新运行该程序,而时间仍然大于零。
编辑:真正的问题是xguess
,yguess
等实际上与用户输入的内容不匹配。我该如何解决这个问题?
编辑#2:在生成随机答案和提示用户输入相应答案之间存在偏移。在程序中,提示用户按“Enter”开始循环。在下面的屏幕表中,我们可以清楚地看到在提示用户提供所述答案之前在循环中给出了答案。输出的形式为(回答,猜测)。
答案 0 :(得分:0)
呼叫
xguess = entryBox1.get()
yguess = entryBox2.get()
zguess = entryBox3.get()
tguess = entryBox4.get()
用户按下返回或创建提交按钮后再检查。原因是你在调用nextResistor时查询框,不一定是在用户完成时查询。