本文主要介绍如何使用Python的Tkinter库插入图片,包含导入图片、缩放图片、调整图片大小以及将图片插入到Tkinter窗口等操作。
导入图片
使用PIL库(Python Imaging Library)里的Image
模块,可以很简单地导入图片。
from PIL import ImageTk, Image
img = Image.open("image.png")
img_tk = ImageTk.PhotoImage(img)
上述代码中,我们首先使用Image
模块打开了一张图片,然后使用ImageTk.PhotoImage
将图片转换为Tkinter中使用的格式,即PhotoImage
对象。这样我们就可以在Tkinter窗口中使用图片了。
缩放图片
当我们导入的图片过大时,如果直接插入到Tkinter窗口中,可能会导致窗口过大而不美观。此时我们需要先将图片进行缩放处理。
resized_img = img.resize((new_width, new_height), Image.ANTIALIAS)
上述代码中,我们使用Image.resize()
方法进行缩放。方法中传入了目标缩放后的宽度和高度,并使用Image.ANTIALIAS
设置缩放时使用的算法。
调整图片大小
如果我们需要使用一张比较大的图片,但又不想在窗口中显示过大的图片,可以使用Label
组件来调整图片大小。我们可以在Label
组件中插入一张图片后该Label
组件就会自动将图片调整为与其大小相同的尺寸。
from tkinter import *
from PIL import ImageTk, Image
root = Tk()
root.geometry("300x300")
# 导入并调整图片大小
img = Image.open("image.png")
resized_img = img.resize((100, 100), Image.ANTIALIAS)
img_tk = ImageTk.PhotoImage(resized_img)
# 插入图片
img_label = Label(root, image=img_tk)
img_label.pack()
root.mainloop()
将图片插入Tkinter窗口
使用上述代码中Label
组件的方法,在需要的位置插入一个Label
组件,并将一张图片作为该组件的内容插入即可。
from tkinter import *
from PIL import ImageTk, Image
root = Tk()
root.geometry("300x300")
# 导入并调整图片大小
img = Image.open("image.png")
resized_img = img.resize((100, 100), Image.ANTIALIAS)
img_tk = ImageTk.PhotoImage(resized_img)
# 其他组件
text_label = Label(root, text="This is a label")
btn = Button(root, text="This is a button")
# 插入图片
img_label = Label(root, image=img_tk)
# 排列组件
text_label.pack()
btn.pack()
img_label.pack()
root.mainloop()
上述代码中,我们首先在需要插入图片的位置插入了一个空的Label
组件。接着我们将需要的图片插入到该组件中。最后,通过使用pack()
方法排列好各个组件,最终将各个组件显示在了Tkinter窗口中。
示例说明
我们将在一张图片上直接插入一个Label
组件,并调整图片大小,让图片的尺寸与组件大小相同。
from tkinter import *
from PIL import ImageTk, Image
root = Tk()
root.geometry("300x300")
# 导入并调整图片大小
img = Image.open("image.png")
resized_img = img.resize((200, 200), Image.ANTIALIAS)
img_tk = ImageTk.PhotoImage(resized_img)
# 空label
empty_label = Label(root, width=200, height=200)
empty_label.pack()
# 插入图片
img_label = Label(empty_label, image=img_tk)
img_label.place(relx=0.5, rely=0.5, anchor=CENTER)
root.mainloop()
上述代码中,我们首先在需要插入图片的位置插入了一个空的Label
组件。然后我们将需要的图片插入到该组件中。最后我们使用place()
方法将图片放在了Label
组件的正中央。
我们还可以在按钮中添加图片。
from tkinter import *
from PIL import ImageTk, Image
root = Tk()
root.geometry("300x300")
# 导入并调整图片大小
img = Image.open("image.png")
resized_img = img.resize((30, 30), Image.ANTIALIAS)
img_tk = ImageTk.PhotoImage(resized_img)
# 插入图片
btn = Button(root, text="This is a button", image=img_tk, compound=LEFT)
btn.pack()
root.mainloop()
上述代码中,我们在按钮组件中通过传入compound=LEFT
参数将图片和文字都放在了同一侧,使得图片和文字合在一起更加美观。
本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:详解python tkinter 图片插入问题 - Python技术站