我是python / tkinter的新手,我想知道如何按下一个按钮并使两个变量更改文本,但之间存在1秒钟的延迟。例如,如果我单击一个按钮,则text1将更改为“ changed”,然后一秒钟后,将text2更改为“ changed”。谢谢!
import tkinter as tk
from time import sleep
x = tk.Tk()
root = tk.Frame(x)
root.grid()
def change(str1,str2):
str1.set("Changed")
sleep(1)
str2.set("Changed")
str1 = tk.StringVar()
str2 = tk.StringVar()
str1.set("One")
str2.set("Two")
text1 = tk.Label(root,textvariable=str1)
text2 = tk.Label(root,textvariable=str2)
text1.grid(row=1)
text2.grid(row=1,column=1)
button1 = tk.Button(root,text="Click",command=lambda:change(str1,str2))
button1.grid()
x.mainloop()
答案 0 :(得分:0)
使用time.sleep
将阻塞您的主线程。您可以使用here的after
方法。
import tkinter as tk
x = tk.Tk()
root = tk.Frame(x)
root.grid()
def change(str1,str2):
str1.set("Changed")
root.after(1000,lambda: str2.set("Changed"))
str1 = tk.StringVar()
str2 = tk.StringVar()
str1.set("One")
str2.set("Two")
text1 = tk.Label(root,textvariable=str1)
text2 = tk.Label(root,textvariable=str2)
text1.grid(row=1)
text2.grid(row=1,column=1)
button1 = tk.Button(root,text="Click",command=lambda:change(str1,str2))
button1.grid()
x.mainloop()