2016-04-14 3 views
1

Так в значительной степени это код, который я до сих пор:Python 3 | Закрытие окна на Tkinter

from tkinter import * 
import time 

root = Tk() 
text = "Hello World" 
theLabel = Label(root,text = text,font=("Arial",200),height = 100,) 
theLabel.pack() 
root.mainloop() 
time.sleep(5) 

Как я могу закрыть окно после того, как программа спит в течение 5 секунд? Я пробовал root.destroy() , но это не сработало.

Спасибо заранее, Fargo

ответ

1

код у вас есть ли не выполнять после root.mainloop().

Даже если вы сделаете простой оператор print("Hello World") после root.mainloop(), он не будет выполнен, пока ваше окно Tkinter не закроется.

Это потому, что root.mainloop() - это петля infinte, постоянно работающая с вашим окном tkinter.

root.mainloop() #Runs your tkinter window 
    print("Hello World") #<-- Will not be executed until your root.mainloop() stops 

Таким образом, вопрос: как мы получаем ваши «закрыть окно через 5 секунд» работать во root.mainloop ...

Ответ посредством использования root.after(miliseconds,desiredFunction).


Вот ваша программа с желаемым эффектом закрытия через 5 секунд:

from tkinter import * 
import time 

root = Tk() 
text = "Hello World" 
theLabel = Label(root,text = text,font=("Arial",200),height = 100,) 
theLabel.pack() 

#after 5000 miliseconds(5 seconds) of root being 'alive', execute root.destroy() 
root.after(5000, root.destroy) #notice no parenthesis() after destroy 

root.mainloop() 

Надеюсь, это то, что вы искали! -Gunner

+0

_ «Постоянно работает ваше окно tkinter.» _ Не совсем то, что происходит. Он не «запускает» окно, он запускает цикл событий. Возможно, это расщепление волос, но вы заставляете его звучать так, будто он запускает вашу программу снова и снова, а это не так. Код в вашей программе выполняется один раз. –

Смежные вопросы