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

在CustomTkinter画布显示图片报错:NameError: name 'NW' is not defined

解决CTkCanvas create_image的NameError: name 'NW' is not defined问题

错误原因很直接:NW是tkinter内置的锚点常量,但你代码里直接写NW,Python找不到这个名称。

有两种修复方式:

  • 用tkinter前缀引用该常量,把anchor=NW改成anchor=tkinter.NW
  • 直接使用小写字符串形式的锚点标识,改成anchor="nw"(tkinter支持字符串格式的锚点参数)

修改后的完整代码示例(采用第一种方法):

import customtkinter as ctk
from PIL import Image,ImageTk
import tkinter
window = ctk.CTk()
window.geometry("450x600")
Main_Frame = ctk.CTkFrame(window, 450,600,fg_color="green",corner_radius=0)
Main_Frame.pack()
Main_Canvas = ctk.CTkCanvas(Main_Frame, width=450, height=600,background="green",highlightthickness=0)
Main_Canvas.create_line(70,65,400,65,width=4)
Main_Canvas.create_line(90,75,380,75,width=4)
img= ImageTk.PhotoImage(Image.open("main.png"))
Main_Canvas.create_image(10,10, anchor=tkinter.NW,image=img)
Title = ctk.CTkLabel(Main_Canvas, text="تطبيق المسلم",font=("Arial",40))
Title.place(x=150, y=10)
Main_Canvas.pack()
window.mainloop()

额外提醒:如果后续把图片加载逻辑放到函数里,要注意避免PhotoImage对象被垃圾回收导致图片不显示——可以把img绑定到画布或窗口的属性上,比如Main_Canvas.img = img。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.26 01:51:13