Python 经过一定时间后,如何让Tkinter标签文本发生变化?

Python 经过一定时间后,如何让Tkinter标签文本发生变化?,python,tkinter,time,var,Python,Tkinter,Time,Var,我正在设置一个GUI应用程序,但我遇到了一个问题,即time.sleep()计时器上Tkinter标签上的文本发生了变化 我试过类似的东西 label_text = Label(main_window, text="hello world") time.sleep(3) label_text = Label(main_window, text="hello world") (请注意,我有网格系统和tkinter窗口设置,我只是不打算显示其中的所有代码) 还有这个 main_window = t

我正在设置一个GUI应用程序,但我遇到了一个问题,即time.sleep()计时器上Tkinter标签上的文本发生了变化

我试过类似的东西

label_text = Label(main_window, text="hello world")
time.sleep(3)
label_text = Label(main_window, text="hello world")
(请注意,我有网格系统和tkinter窗口设置,我只是不打算显示其中的所有代码)

还有这个

main_window = tkinter.Tk()
main_window.resizable(False, False)
main_window.geometry("500x900")

text = StringVar()
text.set("hello")
label = Label(main_window, text=text)
label.grid(column=1, row=1)
time.sleep(3)
text.set("anoefn")
main_window.update()

main_window.mainloop()
谢谢大家!

尝试使用StringVar()数据类型


希望这能奏效。

我想这正是你想要的。您需要使用tk_obj.after来获取时间延迟。 在问题中的代码中,睡眠将mainloop的调用延迟3秒

main_window = tk.Tk()
label_text = tk.Label(main_window, text="hello world")

def on_after():
    label_text.configure( text="hello")

label_text.grid(column=1, row=1)
label_text.after(3000, on_after) # after 3000 ms call on_after

main_window.mainloop()
正如注释所说,您可以使用链接到标签的StringVar。然后,on_after将需要更改StringVar,而不是配置标签

编辑:为了完整性,使用StringVar创建一个版本

main_window = tk.Tk()
var=tk.StringVar()
var.set("Hello World")
label_text = tk.Label(main_window, textvariable=var)

def on_after():
    var.set("Hello ") # set the StringVar instead of configuring the label.

label_text.grid(column=1, row=1)
label_text.after(3000, on_after)
main_window.mainloop()

你试过
标签吗?\u text.text=“你好”
?也就是说,只是更改现有变量的属性?我只是这样做了,遗憾的是,这不起作用。谢谢。这个标签有什么用?计时器可以用按钮代替吗?如果不是的话,我认为最好的做法是线程化,但对于输出“PYVAR0”的Tkinters来说,这并不理想。我不知道为什么。使用
StringVar
与此问题无关。标签可以在不使用
StringVar
的情况下更新。您可以使用它,但这并不能解决此问题。如果使用
StringVar
,则必须使用
textvariable=
而不是
text=
main_window = tk.Tk()
label_text = tk.Label(main_window, text="hello world")

def on_after():
    label_text.configure( text="hello")

label_text.grid(column=1, row=1)
label_text.after(3000, on_after) # after 3000 ms call on_after

main_window.mainloop()
main_window = tk.Tk()
var=tk.StringVar()
var.set("Hello World")
label_text = tk.Label(main_window, textvariable=var)

def on_after():
    var.set("Hello ") # set the StringVar instead of configuring the label.

label_text.grid(column=1, row=1)
label_text.after(3000, on_after)
main_window.mainloop()