解决 tkinter 关闭窗口,但是进程没退出的问题


本文由 简悦 SimpRead 转码, 原文地址 zhuanlan.zhihu.com

最近在学习 tkinter,发现关闭窗口后,进程没退出,找遍全网,终于找到解决方法了。特此记录一下。

解决方法:

1、增加 root.protocol("WM_DELETE_WINDOW", _quit)

2、增加_quit 函数定义

详细代码如下:

import tkinter as tk

def _quit():
    # 执行以下两行代码时必须在同一个线程,tkinter是单线程
    # 同时,此次遇到的问题除此之外还有pynput.keyboard的listener没有调用stop()的问题
    # 因此造成关闭后进程依然存在
    root.quit()
    root.destroy() 

root = tk.Tk()
root.protocol("WM_DELETE_WINDOW", _quit)
tk.Label(root, 'hi').pack()
root.mainloop()

改变前代码:

    icon.stop()
    win.destroy()

改变后解决问题的代码:

    icon.stop()
    win.quit()
    listener.stop()
    win.destroy()

声明:HEUE NOTE|版权所有,违者必究|如未注明,均为原创|本网站采用BY-NC-SA 4.0协议进行授权

转载:转载请注明原文链接 - 解决 tkinter 关闭窗口,但是进程没退出的问题