gpt4 book ai didi

python - 使用循环更新窗口中的图像

转载 作者:太空宇宙 更新时间:2023-11-03 21:37:08 24 4
gpt4 key购买 nike

from PIL import Image, ImageTk
import numpy as np
import tkinter as tk
import time


def put_pixel(row, col):
pixels[row, col] = [255, 255, 255]


width = 20
height = 10


pixels = np.full((height, width, 3), 0, dtype=np.uint8)


root = tk.Tk()
root.geometry("300x300")
root.configure(background='grey')

img = ImageTk.PhotoImage(Image.open("maze.png"))

panel = tk.Label(root, image=img)
panel.pack(side = "top")

b = tk.Button(root, text="Sure!")
b.pack(side="bottom", fill="both")

for i in range(1, width-2, 2):
put_pixel(5, i)
time.sleep(2)

img = Image.fromarray(pixels, 'RGB')
panel.configure(image=img)
panel.image = img

root.mainloop()

该脚本只是在黑色图像上添加白色像素。但我希望它是动画的,以逐步看到每个像素的添加。因此,我尝试在添加每个像素后更新标签中的图像。但我遇到了一个错误

_tkinter.TclError: image "" doesn't exist

如果我不使用循环,只是将图像放入标签中,它就可以正常工作。我该如何解决这个问题?

最佳答案

您需要将 PIL.Image 转换为 tkinter.PhotoImage:

img = Image.fromarray(pixels, 'RGB')
tkimg = ImageTk.PhotoImage(img)
panel.configure(image=tkimg)
panel.image = img

tkinter.Label 只接受这种类型,不接受 PIL 图像。

关于python - 使用循环更新窗口中的图像,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53179227/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com