time.sleep阻止执行前一行代码

时间:2019-03-21 19:12:44

标签: python tkinter

请帮助!

我的代码中有time.sleep(2)行代码,该行在创建Tkinter标签后运行。标签未创建。 time.sleep代码可防止创建标签。

代码:

youhaveregisteredlabel = Label(registerscreen.canvas, text='You have been registered', font=("Arial", 25), bg='#A9E2f3').place(x=0, y=375, width=600, height=150)
#creates a tkinter label widget called 'youhaveregisteredlabel' with the text "You have been registered" on it.

time.sleep(2) 
#creates a 2 second time delay

registerscreenback() 
#runs the registerscreenback subroutine, hiding the register screen and revealing the start screen.

2 个答案:

答案 0 :(得分:0)

在睡觉之前尝试tk.update()

答案 1 :(得分:0)

time.sleep不会阻止前一条命令的执行。它阻止UI刷新自身以显示命令结果。该命令本身已经运行,但是您正在阻止tkinter显示它。

Tkinter是单线程的,因此当您自己的代码正在执行或休眠时,它无法响应事件。这不仅意味着诸如按钮单击之类的事件,而且还意味着内部事件,如要求重新绘制带有新信息的窗口的事件。

一般而言,您永远不要在与GUI代码相同的线程中调用sleep,因为它只是这样做:它会休眠。

如果必须调用sleep,或者必须调用长时间运行的代码段,则可以通过调用所有小部件通用的update_idletasks方法来显式强制tkinter刷新。