如何使用 tkinter 在 python 中更改标签中的图像?

Fah*_*had 1 python tkinter python-3.x

我在标签中有一个图像,我希望在按下按钮时更改该图像,但不是更改图像,而是窗口变为空白:

from tkinter import *
from PIL import Image,ImageTk
import os
root = Tk()
root.state("zoomed")
def chng():
    photo2 = ImageTk.PhotoImage(Image.open("upload.jpg"))
    img.config(image = photo2) 
    img.grid() 
photo = ImageTk.PhotoImage(Image.open("cat.jpg"))
img = Label(root,image = photo)
upload = Button(root, text= "Upload" ,height = 3, width = 12, command = 
chng)
upload.grid( )
for col_num in range(root.grid_size()[1]):
    root.columnconfigure(col_num, minsize=600)
for row_num in range(root.grid_size()[1]):
    root.rowconfigure(row_num, minsize=60)
img.grid() 
root.mainloop()
Run Code Online (Sandbox Code Playgroud)

Nov*_*vel 6

您必须保留对图像的引用。

def chng():
    photo2 = ImageTk.PhotoImage(Image.open("upload.jpg"))
    img.config(image = photo2) 
    img.photo_ref = photo2 # keep a reference
Run Code Online (Sandbox Code Playgroud)

而且你不需要额外的grid()电话。