PIL ImageTk相当于Python 3.x.

hal*_*ion 7 python png tkinter python-imaging-library

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

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

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

qub*_*dup 8

PNG文件,甚至与透明度,正确地在Linux上显示的Tkinter和TTK在Python 3.4.1,即使只有GIF和PPM/PGM支持记录.

具有透明度和Alpha的示例PNG文件

上面的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()
Run Code Online (Sandbox Code Playgroud)

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

PNG测试图像在Python 3.4.1 tkinter中带有文本

请注意,屏幕截图是在没有窗口装饰和深色GUI配色方案的设置上进行的.


小智 2

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

取自这里

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