为了账号安全,请及时绑定邮箱和手机立即绑定

使用 Tkinter 的 Python 测验

使用 Tkinter 的 Python 测验

慕盖茨4494581 2021-05-30 10:44:25
对于一个项目,我需要创建一个教育计划并且我选择了一个测验。我无法让程序识别出标志已增加到 3。这是我增加标志的方式还是其他问题?。我对python(或tkinter)不太熟悉,所以请不要太苛刻。from tkinter import *from tkinter import ttkroot = Tk()notebook = ttk.Notebook(root)frame1 = ttk.Frame(notebook)frame2 = ttk.Frame(notebook)frame3 = ttk.Frame(notebook)notebook.add(frame1, text="Q1")notebook.add(frame2, text="Q2")notebook.add(frame3, text="Q3")def displayscore(total):    score = Tk()    score.geometry("760x450")    score.title("Score")    score.configure(background="#000138")    Label(score, text="Your score is:", fg="Black", font="Arial 36").pack()    Label(score, textvariable=total, fg="Black", font="Arial 36").pack()def flagset():    flag.set(flag.get() + 1)    if flag == 3:        displayscore(total)def totalset():    total.set(total.get() + 1)def main():    #Question 1    def correct1():        clear1()        totalset()        flagset()    def clear1():        list = frame1.grid_slaves()        for l in list:            l.destroy()        Label(frame1, text="Where is the '7' in 1704?").grid(row=0)        flagset()    Label(frame1, text="Where is the '7' in 1704?").grid(row=0)    Button(frame1, text="In the Thousands", command=clear1, width=15).grid(row=1, sticky=W)    Button(frame1, text="In the Hundreds", command=correct1, width=15).grid(row=2, sticky=W)    Button(frame1, text="In the Tens", command=clear1, width=15).grid(row=3, sticky=W)    Button(frame1, text="In the Ones", command=clear1, width=15).grid(row=4, sticky=W)    #Question2    def correct2():        clear2()        totalset()        flagset()    def clear2():        list = frame2.grid_slaves()        for l in list:            l.destroy()        Label(frame2, text="What is 1704 in words?").grid(row=0)        flagset()    Label(frame2, text="What is 1704 in words?").grid(row=0)
查看完整描述

1 回答

?
回首忆惘然

TA贡献1847条经验 获得超11个赞

flag是 tkinter IntVar,所以flag == 3永远不会是真的。
相反,使用flag.get() == 3.

此外,当给出正确答案时,您会增加flag两次,一次在clear函数中,一次在correct函数中。

此外,您在运行之前运行flagset(from cleartotalset,因此total在显示分数之前不会更新最后一个答案。


查看完整回答
反对 回复 2021-06-01
  • 1 回答
  • 0 关注
  • 162 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
微信客服

购课补贴
联系客服咨询优惠详情

帮助反馈 APP下载

慕课网APP
您的移动学习伙伴

公众号

扫描二维码
关注慕课网微信公众号