我正在使用Tkinter开发一个应用程序,该应用程序使用png
图像文件的数据库作为图标。为了在应用程序中使用所述图像,我使用PIL Image.open
打开它们,通过ImageTk.PhotoImage
函数运行它,然后将其传递给widget构造函数。
问题是,我正在尝试将整个项目移植到Python 3.x,并且由于PIL缺乏对Python 3的支持,我不知道如何将图标加载到应用程序中。
如果有人知道允许我使用图标而不必将所有图标转换为.gif
位图的解决方案,我将非常感激!
答案 0 :(得分:5)
PNG文件,即使是透明的,也可以在Linux上的python 3.4.1中的tkinter和ttk中正确显示,即使只有GIF和PPM / PGM支持是documented。
以上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()
上面的代码正确地渲染图像,如下所示:
请注意,屏幕截图是在没有窗口装饰和深色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)