【问题标题】:Alternative way of connecting to PIL library?连接到 PIL 库的替代方法?
【发布时间】:2014-02-10 08:52:59
【问题描述】:

通常库PIL的连接方式如下:

from PIL import ImageTk, Image 

我想这样连接:

import PIL

但我的版本不起作用。代码如下:

import os, sys
import tkinter
import PIL

main = tkinter.Tk()

catalogImg1 = 'imgs'
nameImg1 = 'n.jpg'
pathImg1 = os.path.join(catalogImg1, nameImg1)

openImg = PIL.Image.open(pathImg1)

renderImg = PIL.ImageTk.PhotoImage(openImg)
tkinter.Label(main, image=renderImg).pack()

main.mainloop()

错误信息是:

Traceback(最近一次调用最后一次):文件 “C:\Python33\projects\PIL_IMAGETK\ImageTK_photoimage - копия.py”,行 11、在 openImg = PIL.Image.open(pathImg1) AttributeError: 'module' object has no attribute 'Image'

【问题讨论】:

    标签: python python-3.x tkinter python-imaging-library


    【解决方案1】:

    导入包(PIL)不会自动导入子包、子模块(PIL.ImagePIL.ImageTk)。 (除非包本身这样做)。

    显式导入子模块。

    替换以下行:

    import PIL
    

    与:

    import PIL.Image
    import PIL.ImageTk
    

    【讨论】:

      【解决方案2】:

      这是因为,Image 是 PIL 包中的子模块,即它不是函数或类。导入包不会自动导入其子模块。

      如果要使用PIL命名空间,可以按如下方式导入模块:

      import PIL.Image
      openImg = PIL.Image.open(pathImg1)
      

      如果你想导入PIL的所有子模块,你可以这样做

      from PIL import *
      openImg = Image.open(pathImg1)
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2021-04-21
        • 1970-01-01
        • 2022-06-10
        • 2014-06-20
        • 1970-01-01
        • 2016-11-23
        • 2021-05-02
        相关资源
        最近更新 更多