PIL ImageTk相当于Python 3.x.

时间:2012-06-17 04:13:34

标签: python png tkinter python-imaging-library

我正在使用Tkinter开发一个应用程序,该应用程序使用png图像文件的数据库作为图标。为了在应用程序中使用所述图像,我使用PIL Image.open打开它们,通过ImageTk.PhotoImage函数运行它,然后将其传递给widget构造函数。

问题是,我正在尝试将整个项目移植到Python 3.x,并且由于PIL缺乏对Python 3的支持,我不知道如何将图标加载到应用程序中。

如果有人知道允许我使用图标而不必将所有图标转换为.gif位图的解决方案,我将非常感激!

3 个答案:

答案 0 :(得分:5)

PNG文件,即使是透明的,也可以在Linux上的python 3.4.1中的tkinter和ttk中正确显示,即使只有GIF和PPM / PGM支持是documented

  

Example PNG File With Transparency And Alpha

以上PNG图片包含透明度。

from tkinter import *          

root = Tk()                    

photo = PhotoImage(file="example.png")
photo_label = Label(image=photo)
photo_label.grid()             
photo_label.image = photo      

text = Label(text="Text") # included to show background color
text.grid()    

root.mainloop()

上面的代码正确地渲染图像,如下所示:

  

PNG Test Image In Python 3.4.1 tkinter with text

请注意,屏幕截图是在没有窗口装饰和深色GUI配色方案的情况下进行的。

答案 1 :(得分:0)

您可以使用Pillow在Python 3.3或更早版本中使用png图像。

取自here

  

Pillow> = 2.0.0支持Python版本:2.6,2.7,3.2,3.3。枕头<   2.0.0支持Python版本:2.4,2.5,2.6,2.7。

答案 2 :(得分:0)

该示例在画布上显示图像。

from PIL import Image, ImageTk
From the PIL (Python Imaging Library) module, we import the Image and ImageTk modules.


self.img = Image.open("tatras.jpg")
self.tatras = ImageTk.PhotoImage(self.img)
  

Tkinter内部不支持JPG图像。作为解决方法,我们   使用Image和ImageTk模块。

canvas = Canvas(self,width = self.img.size [0] +20,     height = self.img.size [1] +20) 我们创建了Canvas小部件。它考虑了图像的大小。比实际图像尺寸宽20px,高20px。

canvas.create_image(10,10,anchor = NW,image = self.tatras)