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

如何检测CustomTkinter中CTkToplevel窗口是否已关闭?

检测CTkToplevel窗口是否关闭的实现方法

CustomTkinter的CTkToplevel继承自Tkinter原生的Toplevel组件,可直接使用Tkinter原生机制检测窗口关闭状态,以下是两种可行方案:

方案一:绑定窗口关闭事件

通过protocol方法绑定WM_DELETE_WINDOW事件,精准捕获用户关闭窗口的动作,触发自定义逻辑。

修改后的示例代码:

import customtkinter

class App(customtkinter.CTk):
    def __init__(self):
        super().__init__()
        self.extra_window = Extra(self)  # 传入主窗口实例,方便跨窗口交互

        self.mainloop()

class Extra(customtkinter.CTkToplevel):
    def __init__(self, parent, *args, **kwargs):
        super().__init__(parent, *args, **kwargs)
        self.parent = parent
        self.geometry("400x300")

        self.label = customtkinter.CTkLabel(self, text="ToplevelWindow")
        self.label.pack(padx=20, pady=20)

        # 绑定窗口关闭事件到自定义方法
        self.protocol("WM_DELETE_WINDOW", self.on_close)

    def on_close(self):
        # 添加窗口关闭时需执行的逻辑
        print("Extra窗口已关闭")
        # 销毁窗口实例
        self.destroy()
        # 通知主窗口清除引用
        self.parent.extra_window = None

App() 

方案二:定时检查窗口存在状态

使用winfo_exists()方法定时检查窗口是否存活,适合需要持续监控窗口状态的场景。

示例代码:

import customtkinter

class App(customtkinter.CTk):
    def __init__(self):
        super().__init__()
        self.extra_window = Extra()
        # 启动定时检查,每隔1秒执行一次
        self.check_window_status()

        self.mainloop()

    def check_window_status(self):
        # 检查窗口实例是否存在且未被销毁
        if self.extra_window and not self.extra_window.winfo_exists():
            print("Extra窗口已关闭")
            self.extra_window = None
        # 设置下一次检查
        self.after(1000, self.check_window_status)

class Extra(customtkinter.CTkToplevel):
    def __init__(self, *args, **kwargs):
        super().__init__(*args, **kwargs)
        self.geometry("400x300")

        self.label = customtkinter.CTkLabel(self, text="ToplevelWindow")
        self.label.pack(padx=20, pady=20)

App() 

两种方案差异:

  • 绑定事件方案为主动触发,窗口关闭瞬间立即执行操作,适合需响应关闭动作的场景;
  • 定时检查方案为被动轮询,适合持续跟踪窗口状态的场景,可根据需求调整检查间隔(示例为1秒)。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.01 07:02:35