【问题标题】:Displays PY_VAR4 instead of number [duplicate]显示 PY_VAR4 而不是数字 [重复]
【发布时间】:2018-10-12 07:03:21
【问题描述】:
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 显示而不是数字,感谢您的帮助! :)

【问题讨论】:

  • 这不是lambda 的正确用法。如果您需要做的不止一件事,请为按钮创建适当的功能。

标签: python tkinter


【解决方案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

【讨论】:

  • 谢谢,现在可以使用了!
  • 不客气。 :)
  • 如果我在提问之前发现了另一篇使我的文章重复的文章,对不起!
【解决方案2】:

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2017-11-21
    • 1970-01-01
    • 2018-06-22
    • 2020-04-03
    • 1970-01-01
    • 2023-01-18
    • 2013-08-04
    • 1970-01-01
    相关资源
    最近更新 更多