在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
相关产品推荐
相关产品推荐

