【 以下文字转载自 Python 讨论区 】
发信人: easior (潜行), 信区: Python
标 题: Tkinter 中控件的 after 方法一问
发信站: 水木社区 (Fri Jan 20 09:51:18 2023), 转信
控件的 after 方法常被用来制作定时器,比如
def timer():
do_something()
ctrlobj.after(100, timer)
这个看起来像递归的函数 timer,网上有很多解释它不是递归的。
中文网络中所有比较靠谱的解释应该都是转自 stackoverflow 的,
把 timer 的执行解释为主事件循环上事件注册与销毁。
但仍有一点不解:
timer 函数的调用栈是怎么在 ctrlobj.after 函数调用之后被清理掉的?
感觉上来说,ctrlobj.after 的栈帧在第一次 timer 调用的栈帧之上,
不符合先进后出的规则!
请赐教!
--
修改:easior FROM 27.115.42.*
FROM 27.115.42.*