使用Tkinter在Python中进行多项选择游戏,计算正确的答案

时间:2015-12-09 05:07:19

标签: python user-interface tkinter

我正在开展一个小组项目,我们必须创建一个简单的程序,我们选择使用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()

1 个答案:

答案 0 :(得分:0)

如果我每次点击radiobutton时都能正确理解,代码将检查 答案是否正确。如果是,则增加计数器。 相反,我建议在单击任何单选按钮时检查所有答案,并相应地设置计数器(即每次单击时计数器都会重置)。

希望这有帮助!