Tkinter+SQLite校园测验项目提交答案触发TypeError求助
解决Tkinter测验项目提交答案时的类型错误
你遇到的TypeError: unorderable types: int() < Label()是个典型的类型误用问题——你在confirmAnswer函数里,把一个整数和Tkinter的Label组件对象直接做了比较操作,这两种完全不同的类型根本没法放在一起进行大小判断!
错误根源
在你代码的第126行,肯定存在类似这样的错误代码:
if some_integer < answer_label: # 这里的answer_label是你创建的Label组件对象,不是它显示的答案内容
你误把Label组件本身当成了它显示的文本/数值内容,才触发了类型不匹配的错误。
修复步骤
- 获取Label的实际显示内容
要拿到Label上的文本内容,你需要用Label["text"]或者Label.cget("text")方法,比如:# 假设存储正确答案的Label名为correct_answer_label answer_text = correct_answer_label["text"] - 转换成匹配的数值类型
如果答案是整数类型,记得把文本转成int,同时用户输入的内容(从输入框获取的是字符串)也要转成整数再进行比较:# 获取用户输入并转换为整数 user_input = answer_entry.get() user_answer = int(user_input) # 获取正确答案并转换为整数 correct_answer = int(correct_answer_label["text"]) # 现在可以正常进行比较判断了 if user_answer == correct_answer: # 答对后的逻辑,比如加分 score += 10 - 检查数据库返回值的类型
另外还要确认从SQLite取出的答案类型,如果数据库里存的是字符串格式的数字,取出后也要先转换为数值类型再赋值给Label或者直接用于比较,避免后续再出现类型问题。
内容的提问来源于stack exchange,提问作者Neil Cousins
相关产品推荐
相关产品推荐

