使用customtkinter与tkinter时出现多余窗口及报错问题求助
解决CustomTkinter与Tkinter共存时的多余窗口及关闭报错问题
问题根源
- 同时初始化了
tk.Tk()和customtkinter.CTk()实例,生成了两个独立的根窗口 - 弹出子窗口时使用
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
相关产品推荐
相关产品推荐

