python中的after()与update()

2024-04-19 11:09:23 发布

您现在位置:Python中文网/ 问答频道 /正文

我是python新手,开始使用tkinter作为画布。在

到目前为止,我使用.update()来更新画布。但是还有一个.after()方法。有人能给我解释一下这个函数吗(请举个例子:)。这两者之间有什么区别:

 root.after(integer,call_me)

以及

^{pr2}$

我已经搜索过了,但找不到一个好的解释(我的。后面的例子也行不通:()。在


Tags: 方法函数tkinter画布updateintegerrootcall
3条回答

after是时间等待。update是刷新tkinter任务。 after用于移动对象(例如),而{}则允许刷新屏幕。在

time.sleep(integer)

睡觉时不允许做任何事情(阻塞)!在

after允许tkinter做其他事情。在

update()生成事件循环(mainloop),允许它处理挂起的事件。在

当给定一个或多个参数时,after只需在事件队列中放置一个带有时间戳的事件。在给定的时间过去并且事件循环有机会处理它之前,不会处理事件。在

需要知道的重要一点是,事件循环需要能够不断地响应事件。事件不仅仅用于按钮单击和键盘键,它还用于响应重新绘制窗口、滚动数据、在鼠标悬停在控件上时更改边框和颜色等请求

当您调用sleep()时,程序确实会这样做-它会休眠。当它处于睡眠状态时,它无法处理任何事件。任何睡眠都会导致GUI结巴。睡眠时间越长,口吃就越明显。在

root.after(integer, call_me)

while(True):
    time.sleep(integer)
    root.update()
    call_me()

但是它在主循环中执行,integer指定毫秒而不是秒,并且您可以在调用它之后继续执行操作,因为它是在后台执行的。在

相关问题 更多 >