在Python编程时,经常需要让程序等待一段时间,常用的函数为sleep,但是sleep函数在等待过程中是阻塞的,无法对事件进行响应,如果将其应用在图形界面程序中可能会发生灾难型的后果,需谨慎使用

在tkinter中,对时间管理的函数有:after,after_cancel,after_idle

  • after:延迟调用。使用方法有两种
    1. id = after(delay_ms, callback=None, args),delay_ms为延迟时间,单位为毫秒(ms),表示延迟delay_ms的时间后,调用callback函数。args为callback方法的参数。并返回id
    2. id = after(delay_ms),不使用callback函数,这种方法类似于sleep(0.001*delay_ms),表示延迟delay_ms时间,在延迟时间内,不会对事件进行响应。
  • after_cancel:中止after函数的callback调用,使用方法,after_cancel(id),id为alarm的名称(identifier)
  • after_idle:闲时调用。 使用方法: id = after_idle(callback=None, *args),与after中callback类似。仅当系统闲时(mainloop无任何其它事件),调用一次callback,

但是,使用after函数需要格外注意的是,它仅能保证\(\color{blue}{最少}\)在delay_ms时间后,调用callback,如果系统较忙,延迟时间可能远远超过设定的时间。

参考链接
This (after)method registers a callback function that will be called after a given number of milliseconds.
Tkinter only guarantees that the callback will not be called earlier than that; if the system is busy, the actual delay may be much longer.