You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.23 22:05:20