Python Tkinter: Как мне изменить две строковые переменные одной кнопкой с задержкой между ними? - PullRequest
0 голосов
/ 23 февраля 2019

Я новичок в python / tkinter, и мне было интересно, как я могу нажать одну кнопку и заставить две переменные изменить текст, но с задержкой в ​​1 секунду между ними.Например, если я нажму на кнопку, text1 изменится на «изменен», а через одну секунду текст2 изменится на «изменен».Спасибо!

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 голосов
/ 23 февраля 2019

Использование time.sleep заблокирует ваш основной поток.Вы можете использовать метод 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()
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...