【问题标题】:How can I change the picture inside Tkinter?如何更改 Tkinter 中的图片?
【发布时间】:2019-10-04 10:29:30
【问题描述】:
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 秒后只是白屏。

【问题讨论】:

    标签: python-3.x tkinter


    【解决方案1】:

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

    canvas.delete("all")
    

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

    然后,像往常一样,您必须保存对图像的引用,否则 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')    # 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()
    

    【讨论】:

    • @MrBozkurt 如果此答案解决了您的问题,请选中答案旁边的复选标记以表明您的问题已解决。
    • 你知道如何把图片放到画布上吗?
    • 请开始一个新问题,而不是添加到这个问题中。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2020-06-13
    • 1970-01-01
    • 1970-01-01
    • 2016-11-27
    • 1970-01-01
    • 2020-10-23
    • 1970-01-01
    相关资源
    最近更新 更多