显示png图像时Tkinter / ImageTk'AttributeError'

时间:2013-12-04 20:13:37

标签: python python-2.7 tkinter python-imaging-library

我尝试在PIL库的ImageTk模块的帮助下,在Tkinter Button小部件中使用 PNG 图像。

image = Image.open(os.path.join('icons','bulb.png')) # using PIL for png images
        self.correctGuessImage = ImageTk.PhotoImage(image)

虽然在Windows 7x64下正常工作但它无法在Linux Mint x64上运行。我收到此错误运行相同的文件。

  File "/home/user/Documents/temp.py", line 222, in drawButtons
    self.correctGuessImage = ImageTk.PhotoImage(image)
  File "/usr/lib/python2.7/dist-packages/PIL/ImageTk.py", line 121, in __init__
    self.paste(image)
  File "/usr/lib/python2.7/dist-packages/PIL/ImageTk.py", line 171, in paste
    im.load()
  File "/usr/lib/python2.7/dist-packages/PIL/ImageFile.py", line 192, in load
    d = Image._getdecoder(self.mode, d, a, self.decoderconfig)
AttributeError: 'module' object has no attribute '_getdecoder'

我用代表中的'python','png'和'tk'安装了我能找到的所有内容,但没有效果。任何想法为什么会发生这种情况以及如何解决这个问题?

1 个答案:

答案 0 :(得分:0)

我设法解决了这个奇怪的问题。如果您正在使用Linux Mint,那么您将从代表处安装枕头,不要!首先确保您拥有tk8.5-devtcl8.5-dev个套餐,然后通过PIP安装 pillow

$ sudo pip install pillow

PIP应在您的机器上安装tk和tcl开发包,这将解决上述问题。确保您没有python-imaging-compat实际的PIL库,因为Pillow和PIL不兼容。我发现这非常令人沮丧,因为惠普打印机的用户不会乐于使用hplip(python-imaging-compat的依赖)

我在this page找到了建议。