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

使用customtkinter与tkinter时出现多余窗口及报错问题求助

解决CustomTkinter与Tkinter共存时的多余窗口及关闭报错问题

问题根源

  1. 同时初始化了tk.Tk()和customtkinter.CTk()实例,生成了两个独立的根窗口
  2. 弹出子窗口时使用tk.Tk()而非CTkToplevel,创建新根窗口而非子窗口,关闭该根窗口会触发程序退出报错

修复步骤

  • 移除多余的Tk根窗口初始化:
    检查代码中是否存在root = tk.Tk()这类行,直接删除,改用customtkinter.CTk()作为唯一主窗口:

    import customtkinter as ctk
    
    # 正确初始化主窗口
    root = ctk.CTk()
    root.mainloop()
    
  • 使用CTkToplevel创建子窗口:
    点击“Müşteri Ekle”弹出窗口时,不要用tk.Tk(),而是基于主CTk窗口创建CTkToplevel子窗口:

    def open_add_customer_window():
        # 创建关联主窗口的子窗口
        add_window = ctk.CTkToplevel(root)
        add_window.title("Müşteri Ekle")
        # 后续子窗口控件代码...
    
  • 若必须保留Tk实例,隐藏默认窗口:
    如果因特殊逻辑需要创建tk.Tk(),先调用withdraw()隐藏它:

    import tkinter as tk
    import customtkinter as ctk
    
    # 隐藏默认Tk窗口
    tk_root = tk.Tk()
    tk_root.withdraw()
    
    # 正常使用CTk主窗口
    ctk_root = ctk.CTk()
    ctk_root.mainloop()
    

关闭报错修复说明

关闭多余Tk窗口时报错,是因为该窗口是程序的根窗口之一,关闭后会触发整个Tkinter事件循环终止。改用CTkToplevel子窗口后,关闭子窗口不会影响主程序运行,也就不会出现报错。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.15 18:42:35