导入customtkinter运行代码提示无OptionMenu属性报错如何解决
报错触发原因
出现AttributeError: module 'customtkinter' has no attribute 'OptionMenu'报错,核心是以下三类问题:
- customtkinter库版本过低:
CTkOptionMenu组件是customtkinter 5.0.0及以上版本才新增的组件,低于该版本的官方库本身没有这个类,调用时自然会报属性不存在的错误。 - 导入优先级冲突:如果你的代码存放目录下存在命名为
customtkinter.py的文件、或者名为customtkinter的文件夹,Python导入时会优先加载本地的同名文件/文件夹,而非你安装的官方第三方库,本地文件里没有定义对应组件就会触发报错。 - 写法错误:如果漏写组件名前缀
CTk,把CTkOptionMenu写成tkinter原生组件名OptionMenu,也会触发同类报错。
对应解决步骤
- 第一步升级库到最新版本:在你当前运行代码的Python环境中,执行命令升级customtkinter:
pip install --upgrade customtkinter
升级完成后执行pip show customtkinter查看版本信息,确认版本号≥5.0.0即可。 - 第二步排查同名文件冲突:打开你存放当前代码的文件夹,检查是否存在
customtkinter.py命名的文件、或者customtkinter命名的文件夹,如果存在直接重命名为不与第三方库重名的名称,同时删除同目录下自动生成的__pycache__缓存文件夹。 - 第三步检查组件写法:确认代码里组件名是
CTkOptionMenu,不要漏写CTk前缀。
你贴出的代码段本身写法符合高版本customtkinter的语法要求,处理完上述问题后可以正常运行,可参考如下可运行的最小验证代码:
import customtkinter # 初始化主窗口 root = customtkinter.CTk() root.geometry("400x300") over_frame = customtkinter.CTkFrame(root) over_frame.pack(pady=20, padx=20, fill="both", expand=True) # 原代码段 optionmenu = customtkinter.CTkOptionMenu(over_frame, values=["选项1", "选项2", "选项3"]) optionmenu.pack(pady=12, padx=10) optionmenu.set("CTkOptionMenu") root.mainloop()
特殊情况处理:如果完成上述操作后依然报错,可先执行两次
pip uninstall customtkinter命令完全卸载残留的旧版本库,再重新执行安装命令即可。
内容的提问来源于stack exchange,提问作者user17825405
相关产品推荐
相关产品推荐

