Tkinter测验程序标签显示PY_VAR4而非数字的问题求助
解决Tkinter标签显示PY_VAR而非数字的问题
嘿,我来帮你搞定这个小问题!你遇到的标签显示PY_VAR4而不是题目序号的原因很简单——你直接把IntVar对象传给了Label的text参数,而Tkinter需要用专门的参数来绑定变量,才能正确显示它的值。
问题根源
当你写Label(self.quizf, text=x)时,text参数接收的是字符串或普通数值,而你传入的是IntVar类型的对象,所以标签会显示这个对象的内部标识(就是你看到的PY_VAR4),而不是它存储的数字。
修正方法
只需要把Label的text参数换成textvariable,让它和你的IntVar变量绑定起来:
# 原来的错误写法 # self.recordNum = Label(self.quizf, text=x) # 修正后的写法 self.recordNum = Label(self.quizf, textvariable=x) self.recordNum.pack()
textvariable是Tkinter专门用来绑定变量的参数,当x的值通过add()函数更新时,标签会自动同步显示最新的数字,完全不用手动去修改标签的内容。
另外,再确认下你的按钮命令绑定是否正确,要同时调用两个函数的话,lambda的写法应该是这样:
submit_btn = Button(self.quizf, text="提交", command=lambda: (self.confirmAnswer(), add()))
用括号把两个函数调用包起来,确保点击按钮时两个操作都会执行。
这样修改后,你的标签就能正常显示题目序号,并且每次点击提交按钮后自动递增啦!
内容的提问来源于stack exchange,提问作者Neil Cousins
相关产品推荐
相关产品推荐

