【问题标题】:Update label elements in Tkinter更新 Tkinter 中的标签元素
【发布时间】:2017-05-14 15:43:51
【问题描述】:

我有以下代码:

import tkinter
from random import randint
score = 0
window = tkinter.Tk()

def Validate():
    global score
    answer_string = answer.get()
    try:
        answer_value = int(answer_string)
    except ValueError as e:
        print(e)
        return

if answer_value == number1 * number2:
    score -= 1
    print('True')
    q.pack_forget()
else:
    score += 1
    print('False')
i=0
while i==0:
    number1 = randint(1,12)
    number2 = randint(1,12)
    q = tkinter.Label(window, text="What is " + str(number1) + "x" + str(number2) + " ?")
    q.pack()
    answer = tkinter.Entry(window)
    submit = tkinter.Button(window, text = "Submit", command=Validate)
    answer.pack()
    submit.pack()
    window.mainloop()

我想要做的是每次提出问题时替换 q 中的文本。我想要做的是在 validate 函数中删除 q ,然后在每次代码循环时重新创建它,但这不起作用。

任何帮助将不胜感激。

【问题讨论】:

  • 我相信这解决了你想要做的事情:stackoverflow.com/questions/1918005/…。您无需每次都重新创建标签,只需更新即可。
  • 您尝试创建的新字符串是什么?
  • 我正在尝试更新 q 字符串 q = tkinter.Label(window, text="What is " + str(number1) + "x" + str(number2) + " ?")

标签: python tkinter


【解决方案1】:

基本上你不需要每次迭代都创建标签,有几种方法可以在 tkinter 中更新标签。

例如:

1.

window = tkinter.Tk()
text = tkinter.StringVar()
text.set('old')
lb = tkinter.Label(window, textvariable=text)
...
text.set('new')

2.

lb = tkinter.Label(window, text="What is " + str(number1) + "x" + str(number2) + " ?")
lb['text'] = 'new'

3.

lb = tkinter.Label(window, text="What is " + str(number1) + "x" + str(number2) + " ?")
lb.config(text='new')

【讨论】:

    猜你喜欢
    • 2017-04-12
    • 1970-01-01
    • 2014-08-01
    • 2017-11-18
    • 2012-06-30
    • 1970-01-01
    • 1970-01-01
    • 2015-10-06
    相关资源
    最近更新 更多