Python Tkinter:如何使用一个按钮更改两个字符串变量之间的延迟?

时间:2019-02-22 22:59:18

标签: python tkinter

我是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()

1 个答案:

答案 0 :(得分:0)

使用time.sleep将阻塞您的主线程。您可以使用hereafter方法。

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()