복붙노트

[PYTHON] Canvas에서 이미지를 업데이트하는 방법은 무엇입니까?

PYTHON

Canvas에서 이미지를 업데이트하는 방법은 무엇입니까?

이것이 문제가되는 코드의 본질입니다.

camelot = Canvas(main, width = 400, height = 300)
camelot.grid(row = 0, column = 0, rowspan = 11, columnspan = 3)
MyImage = PhotoImage(file = "sample1.gif")
camelot.create_image(0, 0, anchor = NW, image = MyImage)

이것은 처음에 실행됩니다. 나중에 다른 기능에서 수행하고자하는 작업은 "sample1.gif"를 "sample2.gif"로 바꾸고, 나중에 "sample3.gif"로 바꾸십시오. 나는 붙어있어 내가 지금까지 시도한 것은 아무것도 없었다.

해결법

  1. ==============================

    1.캔버스에 이미지 추가하기 :

    캔버스에 이미지 추가하기 :

    self.image_on_canvas = self.canvas.create_image (0, 0, image = ...)

    이미지 변경 :

    self.canvas.itemconfig (self.image_on_canvas, image = ...)

    전체 예제 :

    from Tkinter import *
    
    #----------------------------------------------------------------------
    
    class MainWindow():
    
        #----------------
    
        def __init__(self, main):
    
            # canvas for image
            self.canvas = Canvas(main, width=60, height=60)
            self.canvas.grid(row=0, column=0)
    
            # images
            self.my_images = []
            self.my_images.append(PhotoImage(file = "ball1.gif"))
            self.my_images.append(PhotoImage(file = "ball2.gif"))
            self.my_images.append(PhotoImage(file = "ball3.gif"))
            self.my_image_number = 0
    
            # set first image on canvas
            self.image_on_canvas = self.canvas.create_image(0, 0, anchor = NW, image = self.my_images[self.my_image_number])
    
            # button to change image
            self.button = Button(main, text="Change", command=self.onButton)
            self.button.grid(row=1, column=0)
    
        #----------------
    
        def onButton(self):
    
            # next image
            self.my_image_number += 1
    
            # return to first image
            if self.my_image_number == len(self.my_images):
                self.my_image_number = 0
    
            # change image
            self.canvas.itemconfig(self.image_on_canvas, image = self.my_images[self.my_image_number])
    
    #----------------------------------------------------------------------
    
    root = Tk()
    MainWindow(root)
    root.mainloop()
    

    보기에 사용 된 이미지 :

    ball1.gif ball2.gif ball3.gif

    결과:

  2. ==============================

    2.

        MyImage = PhotoImage(file = "sample1.gif")
        labelorbuttontodisplayit.image = MyImage
        labelorbuttontodisplayit.configure(image=MyImage)
    

    : P는 그것을해야합니다. 캔버스처럼 라벨이나 버튼에 그 코드를 사용하려고 시도했지만, 그 코드를 조금이라도 적용 할 수있을 것 같습니다.

  3. from https://stackoverflow.com/questions/19838972/how-to-update-an-image-on-a-canvas by cc-by-sa and MIT license