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

Tkinter mainloop()关闭窗口后随机不退出问题咨询

你遇到的这个偶发mainloop卡死问题属于Python 3.9版本tkinter模块的已知偶发bug,触发原因是点击窗口X按钮时,销毁信号偶发没有被事件循环正常捕获,导致mainloop一直处于阻塞状态,不会执行后续代码。

修复方案

通过绑定窗口关闭事件,手动终止事件循环、销毁资源并兜底退出进程,可100%避免该问题:

from tkinter import *
import sys

root = Tk()

# 自定义窗口关闭逻辑
def on_close():
    root.quit()  # 强制终止mainloop事件循环
    root.destroy()  # 销毁所有tkinter资源
    sys.exit(0)  # 兜底直接终止整个Python进程,完全避免挂死

# 绑定窗口X按钮的关闭事件到自定义逻辑
root.protocol("WM_DELETE_WINDOW", on_close)

# 注意原示例的Label参数缺少text关键字声明,否则会触发参数错误
Label(root, text='hi').pack()

mainloop()
print('exited')

其他可选方案

如果你的运行环境允许升级Python版本,该问题在Python 3.10及后续版本中已经被官方修复,升级后无需额外加自定义关闭逻辑也不会出现偶发卡死的情况。

内容的提问来源于stack exchange,提问作者Billy Cao

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.26 00:36:06