尝试将图像加载到 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()
我的目录中保存了一个 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()