我正在开展一个小组项目,我们必须创建一个简单的程序,我们选择使用Tkinter制作一个多选游戏。我们已经构建了大部分游戏,但是在计算正确答案时遇到了问题。我们使用Radiobuttons列出每个问题的答案,但是如果用户多次单击该按钮,它会在点击它时多次递增计数。这是我们的代码。请原谅我们没有完全清理它的混乱,以及它是一个初学者项目,我们不是最有经验的程序员组。
(我故意不包括完整的代码,因为我们拥有的图像的文件路径直接链接到家用计算机,因此无论如何它们都无法使用)
root = Tk()
counter = 0
d = ''
var = StringVar()
def next():
global i,img,groups,listanswer, questions, randint, key,d, counter
s = randint(1,4)
key = random.choice(list(questions.keys()))
img = ImageTk.PhotoImage(Image.open(key))
panel = Label(root, image = img)
panel.grid(column=0, row=0)
b = []
c = listanswer.index(str(questions.get(key)))
d = listanswer[c]
b.append(d)
listanswer.remove(d)
def selection():
global counter, d, sel
sel = str(var.get())
if sel == d:
counter +=1
i=1
while i<5:
a=random.choice(listanswer)
b.append(a)
if s!=i:
Radiobutton(root, text=a, padx=20,variable=var,
value=a,command=selection).grid(column=0, row=i)
listanswer.remove(a)
i+=1
R1 = Radiobutton(root, text=d, padx=20,variable=var, value=d,command =
selection).grid(column=0, row=s)
listanswer=listanswer+b
questions.pop(key)
counterlabel.configure(text='%g' %counter)
counterlabel=Label(root,width=8)
counterlabel.grid(column=1, row=5)
counterval=Label(root, width=10, text='Correct:')
counterval.grid(column=0,row=5)
next=Button(root,text='next',command=next)
next.grid(column=2, row=2)
var = IntVar()
label = Label(root)
label.grid()
root.mainloop()
答案 0 :(得分:0)
如果我每次点击radiobutton时都能正确理解,代码将检查 答案是否正确。如果是,则增加计数器。 相反,我建议在单击任何单选按钮时检查所有答案,并相应地设置计数器(即每次单击时计数器都会重置)。
希望这有帮助!