You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Tkinter测验程序完成第10题时无法正常结束的技术问题

解决Tkinter测验程序第10题后无法正常结束的问题

我看了你的代码片段,发现几个关键问题导致程序在完成第10题后没法正常结束,咱们一步步来修复:

问题分析

  1. 未定义的变量x:你代码里的if x ==10中的x根本没定义,应该是用类实例变量self.Qn才对,毕竟注释里提到了切换题数是用self.Qn +=1。
  2. 切换题数的代码被注释:#self.Qn = self.Qn +1这行被注释掉了,导致题数永远不会增加,自然触发不了结束条件。
  3. 结束条件逻辑颠倒:你说“问题编号比实际题目数大1才结束”,但当前代码是在确认答案后直接判断,却没先切换题数,顺序完全错了。

修改后的代码示例

def confirmAnswer(self): 
    answer = self.enterAnswer.get() # 获取用户在文本框中输入的内容
    # 检查答案是否正确
    if answer == self.correctAnswer: 
        self.quizScore += 1 
        ms.showinfo(title='Correct', message='Correct')
    
    # 先切换到下一题
    self.Qn += 1
    
    # 判断是否完成所有10道题
    if self.Qn > 10:  # 假设Qn从1开始,第10题完成后变成11,触发结束
        ms.showinfo(title="测验结束", message=f"你的最终得分是:{self.quizScore}/10")
        # 这里可以加程序退出的逻辑,比如关闭主窗口
        self.root.destroy()  # 如果root是你的主窗口实例,根据实际变量名调整

关键修改说明

  • 恢复题数切换:把注释掉的self.Qn +=1移到答案判断之后,确保不管对错都能进入下一题流程。
  • 修正结束判断条件:用self.Qn >10代替原来的错误判断,这样做完第10题后,题数变成11,刚好触发结束逻辑。
  • 补充收尾逻辑:在结束弹窗后,加上self.root.destroy()关闭主窗口,让程序真正结束(如果你的主窗口实例是其他名字,替换成对应变量即可)。
  • 替换未定义变量:用self.Qn代替无意义的x,保证变量是类实例中正确的题数计数器。

这样调整后,当用户完成第10题并确认答案后,程序就会正常弹出结束提示,然后关闭窗口结束运行啦。

内容的提问来源于stack exchange,提问作者Neil Cousins

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.26 10:21:10