如何更改 Tkinter 中的图片? [英] How can I change the picture inside Tkinter?

查看:55
本文介绍了如何更改 Tkinter 中的图片?的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

from tkinter import  *
import threading
view=Tk()
canvas=Canvas(view,width=800, height=800)
canvas.pack()
myImage=PhotoImage(file='a.png')
canvas.create_image(0,0,anchor=NW,image=myImage)
def changeImg():
    print("ı came")
    canvas.delete("all")
    myImage = PhotoImage(file='add.png')
    canvas.itemconfigure(view,image=myImage)
    view.update()
timer=threading.Timer(5.0, changeImg)
timer.start()
view.mainloop()

它不会改变图像.5 秒后只是白屏.

It doesn't change the image. Just a white screen after 5 secs later.

推荐答案

当您在函数 changeImg() 中删除画布图像时,尝试配置画布图像是没有用的.

As you delete the canvas image in function changeImg() it's useless to try to configure the canvas image.

canvas.delete("all")

一个解决方案是创建一个新的 PhotoImage 并将其分配给一个新的画布图像.

A solution would be to create a new PhotoImage and assign it to a new canvas image.

然后,与往常一样,您必须保存对图像的引用,否则 Tkinter 会在函数结束时忘记它.

Then, as always, you have to save a reference to the image or Tkinter will forget it when the function ends.

from tkinter import  *
import threading

view=Tk()
canvas=Canvas(view,width=800, height=800)
canvas.pack()
myImage=PhotoImage(file='a.png')
canvas.create_image(0,0,anchor=NW,image=myImage)

def changeImg():
    print("ı came")
    canvas.delete("all")
    myImage = PhotoImage(file='add.png')    # Create new
    canvas.create_image(0,0,anchor=NW,image=myImage) # Create new
    canvas.image = myImage  # Save reference to new image
    view.update()

timer=threading.Timer(2.0, changeImg)
timer.start()
view.mainloop()

这篇关于如何更改 Tkinter 中的图片?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆