[PYTHON] Canvas에서 이미지를 업데이트하는 방법은 무엇입니까?
PYTHONCanvas에서 이미지를 업데이트하는 방법은 무엇입니까?
이것이 문제가되는 코드의 본질입니다.
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.캔버스에 이미지 추가하기 :
캔버스에 이미지 추가하기 :
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.
MyImage = PhotoImage(file = "sample1.gif") labelorbuttontodisplayit.image = MyImage labelorbuttontodisplayit.configure(image=MyImage)
: P는 그것을해야합니다. 캔버스처럼 라벨이나 버튼에 그 코드를 사용하려고 시도했지만, 그 코드를 조금이라도 적용 할 수있을 것 같습니다.
from https://stackoverflow.com/questions/19838972/how-to-update-an-image-on-a-canvas by cc-by-sa and MIT license
'PYTHON' 카테고리의 다른 글
[PYTHON] 파이썬 서브 프로세스의 파일 기술자 3에 쓴다. 객체를 열어 라. (0) | 2018.11.18 |
---|---|
[PYTHON] 파이썬 - 특정 클래스에 의해 시작된 활성 스레드 수를 얻는 방법? (0) | 2018.11.18 |
[PYTHON] PyInstaller로 빌드 된 Windows EXE가 다중 처리와 함께 실패합니다. (0) | 2018.11.18 |
[PYTHON] Excel에서 셀 너비 조정 (0) | 2018.11.18 |
[PYTHON] 파이썬에서 매트릭스를 희소하게하는 csv (0) | 2018.11.18 |