请帮助!
我的代码中有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.
答案 0 :(得分:0)
在睡觉之前尝试tk.update()
答案 1 :(得分:0)
time.sleep
不会阻止前一条命令的执行。它阻止UI刷新自身以显示命令结果。该命令本身已经运行,但是您正在阻止tkinter显示它。
Tkinter是单线程的,因此当您自己的代码正在执行或休眠时,它无法响应事件。这不仅意味着诸如按钮单击之类的事件,而且还意味着内部事件,如要求重新绘制带有新信息的窗口的事件。
一般而言,您永远不要在与GUI代码相同的线程中调用sleep
,因为它只是这样做:它会休眠。
如果必须调用sleep
,或者必须调用长时间运行的代码段,则可以通过调用所有小部件通用的update_idletasks
方法来显式强制tkinter刷新。