我看到after 0 <command>
的一些用法。我想知道这里有什么意义,为什么不直接调用命令?换句话说,这里的区别是什么:
after 0 "puts hi"
puts hi
感谢。
答案 0 :(得分:1)
after 0 …
所做的是将所提供的命令调用有效地放在活动队列的前面,由事件循环处理,除非它在所有当前调度的活动之后(例如,因为它的套接字已经是可读或其计时器事件已被触发)。这有效地延迟了命令的运行,使其尽可能短而不会使其他事件处理程序失效。
当您在运行事件循环的情况下(例如在wish
或tkcon
内)以交互方式运行时,通常会有很小的差异。
要注意的另一种形式是after idle
,它会延迟命令的执行,直到代码必须进入阻塞等待事件。这在Tk中被大量使用以进行图形更新合并,因为一次传递许多不同事件是常见的,例如,一次改变窗口的大小,焦点状态,鼠标位置和重新绘制所需的性质。纯Tcl脚本几乎不需要这个功能。