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

引入Tkinter后Pillow模块Image.open()报错问题排查

问题原因与解决方案

这个错误的核心原因是Tkinter和PIL的Image类命名冲突:

  • Tkinter模块中也有一个Image类(tkinter.Image),如果你用了from tkinter import *这种通配符导入,它会覆盖PIL的Image类。
  • 此时调用Image.open()时,实际调用的是Tkinter的Image类,而它并没有open方法,所以触发AttributeError。

解决方法(二选一即可)

方法1:避免Tkinter通配符导入

把Tkinter的导入改为别名形式,明确区分两个Image类:

# 替换原来的 from tkinter import *
import tkinter as tk
# 保留PIL的正常导入
from PIL import Image, ImageDraw, ImageFont

之后Tkinter相关的组件用tk.xxx调用(比如tk.Tk()、tk.Button()),PIL的Image类不受影响,Image.open()可以正常使用。

方法2:给PIL的Image类起别名

如果一定要用Tkinter的通配符导入,给PIL的Image类设置别名,避免冲突:

from tkinter import *
# 给PIL的Image起别名
from PIL import Image as PILImage, ImageDraw, ImageFont

然后把create_qr_code_with_label函数里的Image.open()改成:

img = PILImage.open(file_name)

验证修改

修改导入逻辑后,重新运行代码,create_qr_code_with_label函数应该能正常读取图片并生成带标签的二维码了。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.14 12:20:01