gpt4 book ai didi

python - 如何更新 Tkinter Canvas 上的图像?

转载 作者:太空宇宙 更新时间:2023-11-03 14:30:45 25 4
gpt4 key购买 nike

我正在尝试制作一个脚本,使我能够动态更新图像对象,然后将更新后的图像发布到 Tkinter Canvas 小部件。这里的代码是原型(prototype)代码,只是为了打下基础。此处的目的是在 Canvas 显示的图像上的单击位置放置一个蓝色像素。

这里发生了一些非常奇怪的事情。我使用的是 Wing IDE,如果我通过调试器运行这段代码,在 woohoo 函数的任何一行设置一个断点,然后在遇到断点后继续执行,代码的工作原理与预期 - 在图像上放置一个蓝色像素。如果我正常运行代码,或者通过没有断点的调试器,图像永远不会更新。这使我得出结论,有一些内部魔法正在发生,如果没有帮助,我对理解这些魔法没有太大希望。

我真的很想知道解决这个问题的最佳方法(或者我猜是任何方法),如果有人能向我解释幕后发生的事情,那就太好了。谢谢。

from Tkinter import *
from PIL import Image, ImageTk

def woohoo(event):

original.putpixel((event.x,event.y),(0,0,255))

newpic = ImageTk.PhotoImage(original)
c.create_image((0,0),image=newpic, anchor="nw")


main = Tk()
c = Canvas(main, width=300, height=300)
main.geometry("300x300+0+0")
c.pack()

original = Image.open("asc.bmp")
picture = ImageTk.PhotoImage(original)
c.create_image((0,0),image=picture, anchor="nw")

c.bind("<Button-1>", woohoo)

main.mainloop()

最佳答案

我的猜测是,您正在函数中创建新图像。对图像的引用是局部变量。当函数退出时,引用被垃圾回收,导致新图像被销毁。最有可能的是,以交互方式运行会导致垃圾收集器以不同方式运行(可能更懒惰?)

关于python - 如何更新 Tkinter Canvas 上的图像?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11220487/

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