CustomTkinter应用.after方法失效:无法每10毫秒执行print("hi")
解决CustomTkinter中.after()无法重复执行函数的问题
问题根源
你的代码中app.after(10, print("hi"))的写法有误:Python会立即执行print("hi"),并将其返回值(None)传递给.after()方法,因此只会执行一次,不会按预期定时重复。.after()的第二个参数需要传入可调用对象(函数名、lambda表达式等),而非函数执行后的结果。
正确实现方式
要实现函数每10毫秒重复执行,需要在执行目标函数后,再次调用.after()来调度下一次执行:
if __name__ == "__main__": app = App() def repeat_task(): print("hi") # 执行完当前任务后,再次调度10毫秒后执行该函数 app.after(10, repeat_task) # 启动第一次任务调度 repeat_task() app.mainloop()
如果逻辑简单,也可以用lambda表达式配合重复调度:
if __name__ == "__main__": app = App() def repeat_task(): print("hi") app.after(10, repeat_task) app.after(10, repeat_task) app.mainloop()
注意事项
- 每10毫秒执行一次的频率极高,可能会导致UI响应卡顿,建议根据实际需求调整间隔时间(比如100毫秒)。
- 若你之前尝试过lambda但未生效,大概率是没有在逻辑内部再次调用
.after()实现循环,仅单次调度只会执行一次。
内容的提问来源于stack exchange,提问作者aoldude123
相关产品推荐
相关产品推荐

