2014-02-10 81 views
0

通常库PIL的连接步骤如下:连接到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 (most recent call last): File "C:\Python33\projects\PIL_IMAGETK\ImageTK_photoimage - копия.py", line 11, in openImg = PIL.Image.open(pathImg1) AttributeError: 'module' object has no attribute 'Image'

回答

2

导入包(PIL)不自动导入子包中,子模块(PIL.ImagePIL.ImageTk)。 (除非包装本身)。

显式导入子模块。

替换下列行:

import PIL 

与:

import PIL.Image 
import PIL.ImageTk 
1

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

如果你想使用PIL命名空间,你可以导入模块如下:

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

如果要导入的PIL所有的子模块,你可以做以下

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