如何在 Tkinter 中覆盖图像

How to overwrite an image in Tkinter

我创建了一个简单的图像打开程序,它通过单击按钮打开从文件对话框编辑的图像 select,但是无论我在哪里 select 另一个图像,它都会出现在当前图像下面

我希望下一张图片 selected 被旧图片替换。

请帮忙看看我该怎么做

from tkinter import *
from PIL import Image,ImageTk
from tkinter import filedialog

root=Tk()
root.title('Image')

def open():
    global my_img
    root.filename = filedialog.askopenfilename(initialdir='/GUI',title='Select A File',filetypes=(('jpg files','*.jpg'),('png files','*.png'),('all files','*.*')))
    my_img = ImageTk.PhotoImage(Image.open(root.filename))
    my_image_lbl = Label(image=my_img).pack()
    
my_btn = Button(root,text='Open File Manager',command=open).pack()

root.mainloop()

您应该在 open() 外部创建 my_image_lbl 并在函数内部更新其图像:

from tkinter import *
from PIL import Image,ImageTk
from tkinter import filedialog

root=Tk()
root.title('Image')

def open():
    filename = filedialog.askopenfilename(initialdir='/GUI',title='Select A File',filetypes=(('jpg files','*.jpg'),('png files','*.png'),('all files','*.*')))
    if filename:
        my_image_lbl.image = ImageTk.PhotoImage(file=filename)
        my_image_lbl.config(image=my_image_lbl.image)
    
Button(root,text='Open File Manager',command=open).pack()

my_image_lbl = Label(root)
my_image_lbl.pack()

root.mainloop()