提问人:Xiaoyong Guo 提问时间:5/30/2021 更新时间:5/30/2021 访问量:95
为什么 tkinter Label 对象中没有引用照片图像?
Why photo image is not referenced in tkinter Label object?
问:
有一些关于标签图像被垃圾回收的相关问题。人们通常建议保留对照片的引用以防止 gc。但我仍然感到困惑。我在创建 Label 对象时想到了label.image = photoImage
labelImg = tk.Label(window, image=photoImage, width=81, height=81)
照片图像是作为参数传递的,因此对象应该已经具有对它的引用。
如果没有,构造函数对传入的对象执行什么操作?labelImg
potoImage
下面是一个示例代码:
import tkinter as tk
from PIL import Image, ImageTk
window = tk.Tk()
window .geometry('400x510')
window.resizable(0, 0)
for n in range(5):
image = Image.open('img.jpg')
photoImage = ImageTk.PhotoImage(image.resize((81, 81)))
labelImg = tk.Label(window, image=photoImage, width=81, height=81)
labelImg.place(relx=0, rely=0.2*n)
# labelImg.image = photoImage without this line, only last photo image is shown.
window.mainloop()
答: 暂无答案
评论
labelImg
tkinter
不会按照您的想法工作 - 它不会创建对照片图像的引用 - 这就是为什么您需要自己做。在这种情况下,只需在创建 .labelImg.img = photoImage
Label
标签
小组件也可能有图像。tkinter