Tkinter测验程序完成第10题时无法正常结束的技术问题
解决Tkinter测验程序第10题后无法正常结束的问题
我看了你的代码片段,发现几个关键问题导致程序在完成第10题后没法正常结束,咱们一步步来修复:
问题分析
- 未定义的变量
x:你代码里的if x ==10中的x根本没定义,应该是用类实例变量self.Qn才对,毕竟注释里提到了切换题数是用self.Qn +=1。 - 切换题数的代码被注释:
#self.Qn = self.Qn +1这行被注释掉了,导致题数永远不会增加,自然触发不了结束条件。 - 结束条件逻辑颠倒:你说“问题编号比实际题目数大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
相关产品推荐
相关产品推荐

