Функция кнопки Tkinter не работает должным образом

#python #tkinter #button

#python #tkinter #кнопка

Вопрос:

У меня есть функция, которая вызывается с кнопки. У него есть time.sleep()

 def func():
    button.place_forget()
    text = Label(root, text = "Text"
    text.place(x = 0, y = 0, in_ = root)
    time.sleep(1)
    text.place_forget()

button = Button(root, text = "Button", command = func)
 

Когда это вызывается, я ожидаю, что кнопка сначала исчезнет, затем появится текст, затем подождите 1 секунду, а затем текст исчезнет. Но что происходит, так это то, что программа ждет 1 секунду, затем добавляет текст, немедленно удаляет его, а затем заставляет кнопку исчезнуть. Как мне заставить ее работать так, как я хочу?

Комментарии:

1. Не могли бы вы попробовать command изменить свой command=lambda:func()

Ответ №1:

Используйте after() вместо sleep() :

 def func():
    button.place_forget()
    text = Label(root, text="Text")
    text.place(x=0, y=0)
    # schedule to remove the text after 1 second
    text.after(1000, text.place_forget)
 

Ответ №2:

 button = Button(root, text = "Button", command = func())
button.pack()
 

Комментарии:

1. command=func() будет выполняться func() немедленно, а не при нажатии кнопки.