首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >在python中的after() vs update()

在python中的after() vs update()
EN

Stack Overflow用户
提问于 2016-02-08 03:45:58
回答 4查看 3.9K关注 0票数 2

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

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

代码语言:javascript
复制
 root.after(integer,call_me)

代码语言:javascript
复制
while(True):
    time.sleep(integer)
    root.update()
    call_me

我已经搜索过了,但找不到一个好的解释(我的.after示例也不起作用:( )。

EN

回答 4

Stack Overflow用户

发布于 2016-02-08 04:09:59

update()让位于事件循环(mainloop),允许它处理挂起的事件。

当给定一个或多个参数时,after会简单地将一个带有时间戳的事件放在事件队列中。在经过给定的时间并且事件循环有机会处理该事件之前,不会处理该事件。

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

当您调用sleep()时,程序就会执行此操作-它会休眠。当它处于休眠状态时,它无法处理任何事件。任何睡眠都会导致GUI卡顿。睡眠时间越长,口吃就越明显。

票数 4
EN

Stack Overflow用户

发布于 2016-02-08 03:50:50

root.after(integer, call_me)类似于

代码语言:javascript
复制
while(True):
    time.sleep(integer)
    root.update()
    call_me()

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

票数 1
EN

Stack Overflow用户

发布于 2016-02-08 03:48:17

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

代码语言:javascript
复制
time.sleep(integer)

休眠时不允许做任何其他事情(阻塞)!

after允许tkinter做其他事情。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/35258218

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档