PIL没有ImageTk属性

时间:2019-10-13 12:41:22

标签: python python-imaging-library

为什么会起作用:

...
from PIL import Image, ImageTk
.... 
img = ImageTk.PhotoImage(Image.open("One.jpg"))
...

但是这个

...
import PIL as p
.... 
img = p.ImageTk.PhotoImage(p.Image.open("One.jpg"))
...

告诉我module 'PIL' has no attribute 'ImageTk'

我认为我可以将PIL导入为p,然后在代码中使用PIL中的任何内容,只要它以p开头即可。

我想避免使用from PIL import Image, ImageTk,因为我希望了解一些代码源于哪些模块。

1 个答案:

答案 0 :(得分:1)

PIL的__init__.py是一个空的存根,这很常见。不会导入所有模块。

因此,当您尝试:from PIL import ImageTk时,它将在PIL软件包文件夹中搜索并找到ImageTk.py文件并将其导入。

但是,当您尝试使用PIL.ImageTk时,您实际上是在PIL模块上进行属性查找。

为避免混乱,您可以这样做:

from PIL import Image as Pil_image, ImageTk as Pil_imageTk

这样您就可以为该类命名,以告诉您该类来自何处。