我是python的新手,开始使用tkinter作为画布。
到目前为止,我使用.update()来更新我的画布。但是还有一个.after()方法。谁能给我解释一下这个函数(请举个例子:),有什么区别吗:
root.after(integer,call_me)
和
while(True):
time.sleep(integer)
root.update()
call_me
我已经搜索过了,但找不到一个好的解释(我的.after示例也不起作用:( )。
发布于 2016-02-08 04:09:59
update()
让位于事件循环(mainloop
),允许它处理挂起的事件。
当给定一个或多个参数时,after
会简单地将一个带有时间戳的事件放在事件队列中。在经过给定的时间并且事件循环有机会处理该事件之前,不会处理该事件。
需要知道的重要一点是,事件循环需要能够不断地响应事件。事件不仅仅用于按钮点击和键盘按键,它还用于响应重绘窗口、滚动数据、当鼠标悬停在小部件上时更改边框和颜色等请求。
当您调用sleep()
时,程序就会执行此操作-它会休眠。当它处于休眠状态时,它无法处理任何事件。任何睡眠都会导致GUI卡顿。睡眠时间越长,口吃就越明显。
发布于 2016-02-08 03:50:50
root.after(integer, call_me)
类似于
while(True):
time.sleep(integer)
root.update()
call_me()
但它是在主循环中执行的,integer
指定的是毫秒而不是秒,而且您可以在调用它之后继续执行操作,因为它是在后台执行的。
发布于 2016-02-08 03:48:17
after
是时间等待。update
正在刷新tkinter
任务。after
用于移动对象(例如),而refresh
允许刷新屏幕。
time.sleep(integer)
休眠时不允许做任何其他事情(阻塞)!
而after
允许tkinter
做其他事情。
https://stackoverflow.com/questions/35258218
复制相似问题