2024-04-19 11:09:23 发布
网友
我是python新手,开始使用tkinter作为画布。在
到目前为止,我使用.update()来更新画布。但是还有一个.after()方法。有人能给我解释一下这个函数吗(请举个例子:)。这两者之间有什么区别:
root.after(integer,call_me)
以及
我已经搜索过了,但找不到一个好的解释(我的。后面的例子也行不通:()。在
after是时间等待。update是刷新tkinter任务。 after用于移动对象(例如),而{}则允许刷新屏幕。在
after
update
tkinter
time.sleep(integer)
睡觉时不允许做任何事情(阻塞)!在
而after允许tkinter做其他事情。在
update()生成事件循环(mainloop),允许它处理挂起的事件。在
update()
mainloop
当给定一个或多个参数时,after只需在事件队列中放置一个带有时间戳的事件。在给定的时间过去并且事件循环有机会处理它之前,不会处理事件。在
需要知道的重要一点是,事件循环需要能够不断地响应事件。事件不仅仅用于按钮单击和键盘键,它还用于响应重新绘制窗口、滚动数据、在鼠标悬停在控件上时更改边框和颜色等请求
当您调用sleep()时,程序确实会这样做-它会休眠。当它处于睡眠状态时,它无法处理任何事件。任何睡眠都会导致GUI结巴。睡眠时间越长,口吃就越明显。在
sleep()
root.after(integer, call_me)与
root.after(integer, call_me)
while(True): time.sleep(integer) root.update() call_me()
但是它在主循环中执行,integer指定毫秒而不是秒,并且您可以在调用它之后继续执行操作,因为它是在后台执行的。在
integer
after
是时间等待。update
是刷新tkinter
任务。after
用于移动对象(例如),而{睡觉时不允许做任何事情(阻塞)!在
而
after
允许tkinter
做其他事情。在update()
生成事件循环(mainloop
),允许它处理挂起的事件。在当给定一个或多个参数时,
after
只需在事件队列中放置一个带有时间戳的事件。在给定的时间过去并且事件循环有机会处理它之前,不会处理事件。在需要知道的重要一点是,事件循环需要能够不断地响应事件。事件不仅仅用于按钮单击和键盘键,它还用于响应重新绘制窗口、滚动数据、在鼠标悬停在控件上时更改边框和颜色等请求
当您调用
sleep()
时,程序确实会这样做-它会休眠。当它处于睡眠状态时,它无法处理任何事件。任何睡眠都会导致GUI结巴。睡眠时间越长,口吃就越明显。在root.after(integer, call_me)
与但是它在主循环中执行,
integer
指定毫秒而不是秒,并且您可以在调用它之后继续执行操作,因为它是在后台执行的。在相关问题 更多 >
编程相关推荐