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

问题描述 投票:0回答:2

请帮忙!:

我的代码中有一个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.
python tkinter
2个回答
0
投票

在睡觉前尝试tk.update()


0
投票

time.sleep不会阻止先前的命令执行。它可以防止UI刷新自身以显示命令的结果。命令本身已经运行,但是你阻止tkinter显示它。

Tkinter是单线程的,因此当您自己的代码正在执行或休眠时,它无法响应事件。这不仅意味着按钮点击等事件,还包括内部事件,例如使用新信息重绘窗口的请求。

作为一般的经验法则,你永远不应该在与GUI代码相同的线程中调用sleep,因为它只是这样:它会睡觉。

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

© www.soinside.com 2019 - 2024. All rights reserved.