[PYTHON] Tkinter에 이미지를 표시 할 수 없음 [duplicate]
PYTHONTkinter에 이미지를 표시 할 수 없음 [duplicate]
프로그램을 실행할 때 캔버스가 나타나지만 이미지는 나타나지 않습니다.
canvas = Canvas(frame, width = 128, height = 128, bg= 'white')
image_data = Image.open('NoArt.gif')
ppm_f = ImageTk.PhotoImage(image_data)
canvas.create_image(0, 0, image = ppm_f, anchor = NW)
canvas.pack(side=BOTTOM)
어떤 아이디어 ??
추신.
나는 가지고있다 PIL 버전 1.6, 파이썬 2.6, 파이썬 2.6과 함께 제공되는 Tkinter의 버전
해결법
-
==============================
1.좋아, 내가 알아 냈어. 분명히 파이썬이 쓰레기 처리를 처리하는 방식으로 인해 사진이 지워집니다. 전역 범위의 이미지에 대한 참조가 필요합니다. 이것은 결국 결국 사용하는 작업 코드입니다.
좋아, 내가 알아 냈어. 분명히 파이썬이 쓰레기 처리를 처리하는 방식으로 인해 사진이 지워집니다. 전역 범위의 이미지에 대한 참조가 필요합니다. 이것은 결국 결국 사용하는 작업 코드입니다.
self.photo = PhotoImage(file="noart.ppm") self.Artwork = Label(self.frame, image=self.photo) self.Artwork.photo = self.photo self.Artwork.pack()
그 self.Artwork.photo = self.photo는 중요한 부분입니다. 이미지가 표시됩니다.
-
==============================
2.다른 누구도 비슷한 문제가 발생하면 하드 코드 된 솔루션을 사용해보십시오.
다른 누구도 비슷한 문제가 발생하면 하드 코드 된 솔루션을 사용해보십시오.
import Image import Tkinter as tk def cleanhex(x): return str(hex(x))[-2:] def renderimage(target,data,w,h): canvas = tk.Canvas(target,width=w,height=h) canvas.pack() for x in range(w): for y in range(h): c = "#" + cleanhex(data[x,y][0]) + cleanhex(data[x,y][1]) + cleanhex(data[x,y][2]) canvas.create_line(x,y,x+1,y+1,fill=c) im = Image.open("whatever.whatever") renderimage(root,im.load(),im.size[0],im.size[1])
-
==============================
3.이 답변과이 인기있는 질문 및 답변에서 언급 한 바와 같이 effbot.page
이 답변과이 인기있는 질문 및 답변에서 언급 한 바와 같이 effbot.page
예를 들어 전역 범위에서 선언되지 않았으므로 아래 코드의 이미지를 참조하십시오.
import tkinter as tk root = tk.Tk() def show_image(): img_label = tk.Label(root) image = tk.PhotoImage(file="test.png") img_label['image'] = image img_label.pack() show_image() root.mainloop()
아래 예제에서 img_label.image는 전역 적으로이 예에서 img_label에 첨부 된 속성으로 선언됩니다.
import tkinter as tk root = tk.Tk() def show_image(): img_label = tk.Label(root) img_label.image = tk.PhotoImage(file="test.png") img_label['image'] = img_label.image img_label.pack() show_image() root.mainloop()
img_label이 전역 적으로 선언되지 않았기 때문에 여전히 이상하게 보입니다. 덜 혼란스러운 방법은 전역 이미지를 show_image의 첫 번째 라인으로 추가하는 것입니다.
from https://stackoverflow.com/questions/3359717/cannot-display-an-image-in-tkinter by cc-by-sa and MIT license
'PYTHON' 카테고리의 다른 글
[PYTHON] 아름다운 스프 4 find_all은 아름다운 스프 3이 발견 한 링크를 찾지 못합니다. (0) | 2018.10.15 |
---|---|
[PYTHON] WHERE ___ IN ___ 문 사용 (0) | 2018.10.15 |
[PYTHON] 왜 파이썬에서 중첩 목록의 한 요소 만 변경할 수 없습니까? [duplicate] (0) | 2018.10.15 |
[PYTHON] 그 값을 기반으로 배열의 누피 합계 요소 (0) | 2018.10.15 |
[PYTHON] 어디에서 플라스크에 비밀 키를 두어야합니까? (0) | 2018.10.15 |