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

如何修复AttributeError: module 'PIL.ImageTk' has no attribute 'PhotoImage'错误?

解决PIL.ImageTk无PhotoImage属性的问题

可能的原因及对应解决方案:

  1. 确认安装的是Pillow而非旧版PIL
    PIL已停止维护,当前主流使用的是其分支Pillow。旧版PIL可能存在属性缺失问题,执行以下命令确保安装/升级到最新版Pillow:

    pip install --upgrade pillow
    
  2. 调整导入语句避免模块冲突
    部分环境下导入方式可能导致模块加载不完整,可修改导入语句为:

    import PIL.ImageTk as ImageTk
    import PIL.Image as Image
    

    替代原有的from PIL import ImageTk, Image,避免潜在的命名空间冲突。

  3. 显式打开图片并保持对象引用
    Tkinter的PhotoImage存在垃圾回收问题,若对象无引用会被自动回收导致图片不显示。同时,先通过Image.open打开图片再转换为PhotoImage更稳定:

修改后的完整代码:

from tkinter import *
import PIL.ImageTk as ImageTk
import PIL.Image as Image

def login_page():
    signup_window.destroy()
    import signin

signup_window = Tk()

signup_window.title('Sign up page')
signup_window.resizable(False, False)

# 先打开图片文件
img = Image.open('bg.jpg')
# 转换为Tkinter可用的PhotoImage对象
background = ImageTk.PhotoImage(img)

bgLabel = Label(signup_window, image=background)
bgLabel.grid()
# 保持对PhotoImage对象的引用,防止被垃圾回收
bgLabel.image = background

signup_window.mainloop()

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.05 04:47:43