matplotlib 如果窗口突然关闭,基于tkinter的应用程序会在后台继续运行

xwbd5t1u  于 2023-06-23  发布在  其他
关注(0)|答案(2)|浏览(179)

我已经创建了一个tkinter应用程序,让用户可以在本地创建和参加测验。不幸的是,如果用户通过点击角上的“x”而不是点击主菜单上的“退出”按钮来关闭窗口,则窗口被破坏,但进程仍在后台。这不是一个大问题,因为它停止使用任何CPU,每个示例只保留大约40MB的内存,但对于我想部署的应用程序来说,这似乎相当草率。
我不知道当窗口关闭时拒绝退出的具体原因是什么,因为它可能来自我1700行代码中的几乎任何地方,所以我正在寻找一些更通用的提示,用于识别仍在运行的内容或在窗口关闭时杀死任何剩余的进程。如果有人认为我的代码有帮助,我很乐意提供它,尽管我重申,由于我无法确定特定问题的根源,它相当长。

tct7dpnv

tct7dpnv1#

您可以从Tk使用state()来检查窗口是否打开。当窗口打开时,它应该返回'normal',如果窗口没有打开,它将返回其他内容。
我要做的是添加一些东西来检查窗口的状态,并在窗口关闭时退出应用程序。

while app_is_running:
    if root.state() != 'normal':
        sys.exit(0)
vxf3dgd4

vxf3dgd42#

我在Tkinter应用程序中遇到过类似的问题。我从this post那里了解到,我可以像这样为窗口删除设置回调:

def closing_cbk():
    # Shutdown procedure
    root.quit()
    root.destroy()
...
root.protocol("WM_DELETE_WINDOW", closing_cbk)

您可以将closing_cbk()的内容替换为“sys.exit()”或其他对您的特定应用程序更有意义的内容。

相关问题