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

tkinter中如何暂停指定函数而不冻结整个窗口?

问题根源

你当前调用的是仅传入时间参数的after()方法,该方法会直接阻塞Tkinter的主事件循环,导致窗口无法响应交互、也无法完成界面重绘,自然就会出现冻结的问题。

after()方法的标准用法是同时传入延迟时长和回调函数,Tkinter主循环会在计时结束后自动执行回调,全程不会阻塞界面运行。

正确实现

def setTimer(mins=25):
    timer.config(text="In Progress")
    # 延迟指定时长后执行状态更新逻辑,不阻塞主循环
    window.after(mins * 60 * 1000, update_timer_status)

def update_timer_status():
    timer.config(text="Timer done!")

如果需要给回调函数传递自定义参数,直接追加在回调函数名之后即可:

def setTimer(mins=25, done_tip="Timer done!"):
    timer.config(text="In Progress")
    window.after(mins * 60 * 1000, update_timer_status, done_tip)

def update_timer_status(content):
    timer.config(text=content)

只要回调函数内部没有长时间阻塞的操作,运行全程窗口都不会出现冻结,完全满足你的需求。

内容的提问来源于stack exchange,提问作者Daniel Portas-Levy

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.29 11:45:08