Как я могу изменить картинку внутри Tkinter? - PullRequest
0 голосов
/ 04 октября 2019
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 секунд.

1 Ответ

1 голос
/ 04 октября 2019

Когда вы удаляете изображение холста в функции 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()
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...