ImageTk.PhotoImage로 얽힌 이야기
문제
PSD 파일을 읽고 레이어별로 tkinter의 Canvas에 표시하려고하면 할 수 없어서 곤란한 이야기
문제 코드def preview(path):
global canvas
image = PSDImage.open(path)
imagetk = ImageTk.PhotoImage(image)
canvas.create_image(image=imagetk)
원인
함수에서 "ImageTk.PhotoImage"를 사용하여 객체를 생성했을 뿐이라고 가비지 컬렉션에서 지워져 Canvas에서 표시되지 않는다는 정보가 인터넷에서 발견
Canvas는 참조하고 있는 것이 아닐까?
그것이나 함수내의 것이기 때문에 함수의 처리 끝나면 사라져 버린다든가?
잘 모르겠다
대책
제대로 남기도록 생성된 객체는 글로벌 배열로 저장하기로 했습니다.
수정 후imagetk_list = list()
def preview(path):
global canvas,imagetk_list
image = PSDImage.open(path)
imagetk = ImageTk.PhotoImage(image)
imagetk_list.append(imagetk)
canvas.create_image(image=imagetk)
화면
아니, 캔버스에 낼 수 있었어.
Reference
이 문제에 관하여(ImageTk.PhotoImage로 얽힌 이야기), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다
https://qiita.com/nekodamu/items/f87c55c730944087c819
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념
(Collection and Share based on the CC Protocol.)
def preview(path):
global canvas
image = PSDImage.open(path)
imagetk = ImageTk.PhotoImage(image)
canvas.create_image(image=imagetk)
함수에서 "ImageTk.PhotoImage"를 사용하여 객체를 생성했을 뿐이라고 가비지 컬렉션에서 지워져 Canvas에서 표시되지 않는다는 정보가 인터넷에서 발견
Canvas는 참조하고 있는 것이 아닐까?
그것이나 함수내의 것이기 때문에 함수의 처리 끝나면 사라져 버린다든가?
잘 모르겠다
대책
제대로 남기도록 생성된 객체는 글로벌 배열로 저장하기로 했습니다.
수정 후imagetk_list = list()
def preview(path):
global canvas,imagetk_list
image = PSDImage.open(path)
imagetk = ImageTk.PhotoImage(image)
imagetk_list.append(imagetk)
canvas.create_image(image=imagetk)
화면
아니, 캔버스에 낼 수 있었어.
Reference
이 문제에 관하여(ImageTk.PhotoImage로 얽힌 이야기), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다
https://qiita.com/nekodamu/items/f87c55c730944087c819
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념
(Collection and Share based on the CC Protocol.)
imagetk_list = list()
def preview(path):
global canvas,imagetk_list
image = PSDImage.open(path)
imagetk = ImageTk.PhotoImage(image)
imagetk_list.append(imagetk)
canvas.create_image(image=imagetk)
아니, 캔버스에 낼 수 있었어.
Reference
이 문제에 관하여(ImageTk.PhotoImage로 얽힌 이야기), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://qiita.com/nekodamu/items/f87c55c730944087c819텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)