加载png、jpg等图片可以让Python的GUI界面更加活泼和美观。在Python中使用tkinter加载图片的方法有多种,下面将详细讲解其中两种常用的方法。
1. 使用PIL模块加载图片
PIL(Python Imaging Library)是Python的一个图像处理库,可以用来打开、保存、创建、修改各种格式的图片。下面演示如何使用PIL来加载图片。
首先需要安装PIL模块,可使用pip install pillow进行安装。如果已经安装了Pillow,则可以直接导入Image模块进行图片处理。
from PIL import Image, ImageTk
import tkinter as tk
# 创建主窗口
root = tk.Tk()
# 打开图片
img = Image.open("example.png")
# 将图像转为tkinter可用的PhotoImage格式
photo = ImageTk.PhotoImage(img)
# 显示图像
label = tk.Label(root, image=photo)
label.pack()
# 进入消息循环
root.mainloop()
上述代码中,首先导入了PIL模块中的Image和ImageTk,以及tkinter模块。创建主窗口后,使用Image.open()打开需要加载的图片,然后将图像转换为tkinter可用的格式,并使用tk.Label()组件来显示图像。最后,使用root.mainloop()进入消息循环。
需要注意的是,在使用PIL打开图片时,需要注意图片的路径问题,此处默认图片放在代码所在目录。
2. 使用tkinter的PhotoImage直接加载图片
另外一种直接使用tkinter的PhotoImage来加载图片的方法不需要安装PIL模块,直接使用tkinter模块即可实现。
import tkinter as tk
# 创建主窗口
root = tk.Tk()
# 创建PhotoImage对象
photo = tk.PhotoImage(file="example.png")
# 显示图像
label = tk.Label(root, image=photo)
label.pack()
# 进入消息循环
root.mainloop()
上述代码中,首先创建主窗口,然后使用tkinter的PhotoImage创建图像对象,并使用tk.Label()组件来显示图像。最后,使用root.mainloop()进入消息循环。
需要注意的是,使用tkinter的PhotoImage时,只支持GIF和PGM/PPM格式的图像,不能直接加载png、jpg等格式的图片,需要将其转换为GIF或PGM/PPM格式。可以使用PIL模块将png图片转换为GIF格式。
from PIL import Image
# 打开png图片
old_image = Image.open("example.png")
# 转换为gif格式
old_image.save("example.gif")
# 创建PhotoImage对象
photo = tk.PhotoImage(file="example.gif")
上述代码中,使用PIL模块打开需要转换的png图片,然后使用save()方法将其转换为gif格式保存。最后创建PhotoImage对象时,使用转换后的gif格式图片即可。