显示PY_VAR4而不是数字

时间:2018-05-02 08:21:36

标签: python tkinter

x = IntVar()
x.set(1)
def add():
    x.set(x.get()+1)

我正在使用这段代码更新我正在制作的tkinter测验中的问题编号。

self.recordNum = Label(self.quizf, text=x)
self.recordNum.pack()

self.Submit = Button(self.quizf, text = 'submit', command=lambda:[self.confirmAnswer(),add()])

我使用lambda所以我可以在同一个按钮中有两个命令,我需要self.confirmAnswer运行if语句来检查答案,add命令激活第一个上面显示的代码。

当我运行测验PY_VAR4显示而不是数字时,感谢您的帮助! :)

2 个答案:

答案 0 :(得分:1)

self.recordNum = Label(self.quizf, text=x.get())
self.recordNum.pack()

self.Submit = Button(self.quizf, text = 'submit', command=lambda:[self.confirmAnswer(),add()])

在标签中,您必须使用x.get()而不是x,因为您需要x的值。

只需使用x即可引用仅为PY_VAR的对象。引用末尾的4仅表示用于区分其他变量的变量号。在这种情况下,到目前为止,程序总共声明了5个变量,因为引用从PY_VAR0开始......一直到...... PY_VAR4

使用x.get()将获取存储在引用所指向的对象中的值。

所以代替:self.recordNum = Label(self.quizf, text=x)

使用:self.recordNum = Label(self.quizf, text=x.get())

可能重复:Tkinter IntVar returning PY_VAR0 instead of value

答案 1 :(得分:0)

您需要使用“textvariable”作为变量的参数。然后标签将自行更新。