首页 > 解决方案 > 为什么我不能在 tkinter 中“打包”或“网格”一个 ImageTk.PhotoImage?

问题描述

我的代码:

my_img = Image.open(r"C:\Users\talha\OneDrive\Documents\Python\Tkinter\My First Tkinter Program\Mt Everest.jpg").resize((500,500))
my_img = ImageTk.PhotoImage(my_img)
my_img.pack()

错误信息:

AttributeError: 'PhotoImage' object has no attribute 'pack'

标签: pythonpython-3.xtkinter

解决方案


AnImageTk.PhotoImage不是tkinter小部件,但可以成为其中的一部分。然后它将是您想要pack()或创建的小部件grid()

下面是将一个放在tkinter.Label小部件上(然后打包)的示例:

from PIL import Image, ImageTk
import tkinter as tk

filepath = r"C:\Users\talha\OneDrive\Documents\Python\Tkinter\My First Tkinter Program\Mt Everest.jpg"

root = tk.Tk()

image = Image.open(filepath).resize((500, 500))  # PIL image object.
my_img = ImageTk.PhotoImage(image)  # Convert to tkinter PhotoImage.
my_label = tk.Label(image=my_img)  # Put it on a Label.
my_label.img = my_img  # Attach reference to image to prevent its deletion.
my_label.pack()

root.mainloop()


推荐阅读