2014-02-10 54 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)