尝试将图像加载到 tkinter 时出现空白图像 window

Blank images when attempting to load image into tkinter window

我的目录中保存了一个 PNG 文件。我正在尝试创建一个程序,将这张图片加载到 window 上 3 次。我正在为 UI 及其 PhotoImage class 使用 tkinter 来执行此操作。要加载图片,我通常会创建一个 class,然后加载一个带有 'image parameter' 的按钮。但是,当我尝试 运行 这个程序时,它只加载了第三张图片。第一个和第二个只是显示为空白框。有人可以帮我吗? 代码如下:

from tkinter import *

def add():
    imageClass = PhotoImage(file="updated.png")
    button = Button(root, compound=TOP, image=imageClass, pady=20, bd=0, highlightthickness=0)
    button.pack()

root = Tk()

root.config(bg="white")

for i in range(3):
    root.update()
    imageClass = PhotoImage(file="updated.png")
    button = Button(root, compound=TOP, image=imageClass, pady=20, bd=0, highlightthickness=0)
    button.pack()
root.mainloop()

您的图像正在 for 循环 的每次迭代中存储为 imageClass = PhotoImage(file="updated.png")

imageClass 为每个 i 覆盖其值,并且当循环最终退出时仅 中的 imageClass 引用仍然存在,因此为什么第三张图片出现而其他人没有。

因此您需要将每个 PhotoImage“引用”存储在某个地方,例如在全局字典中

root = Tk()

# Modification 1
myImageClasses = dict()

root.config(bg="white")

for i in range(3):
    root.update()
    # Modification 2
    myImageClasses[i] = PhotoImage(file="updated.png")
    button = Button(root, compound=TOP, image=myImageClasses[i], pady=20, bd=0, highlightthickness=0)
    button.pack()

root.mainloop()