파이썬 tkinter 이미지 파일

조회수 1496회
from tkinter import *

window = Tk()
window.title("지금 당장 필요한 것 선택하기")

def myFunc():
    if var.get() == 1:
        labelImage.configure(image=photo1)
    elif var.get() == 2:
        labelImage.configure(image=photo2)
    else:
        labelImage.configure(image=photo3)

labelText = Label(window, text="필요 물품 투표",
                  fg="red", font=("궁서체", 20))

var = IntVar()
rb1 = Radiobutton(window, text="휴지", variable=var,
                  value=1)
rb2 = Radiobutton(window, text="시계", variable=var,
                  value=2)
rb3 = Radiobutton(window, text="영양제", variable=var,
                  value=3)
buttonOk = Button(window, text="사진 보기",
                  command=myFunc)

photo1 = PhotoImage(file="image/tissue.png")
photo2 = PhotoImage(file="image/clock.png")
photo3 = PhotoImage(file="image/tonic.png")

labelImage = Label(window, width=200, height=200, bg="orange",
                   image=None)

labelText.pack(padx=5, pady=5)
rb1.pack(padx=5, pady=5)
rb2.pack(padx=5, pady=5)
rb3.pack(padx=5, pady=5)
buttonOk.pack(padx=5, pady=5)
labelImage.pack(padx=5, pady=5)

window.mainloop()

<오류 메세지> _tkinter.TclError: couldn't recognize data in image file "image/tissue.png"

파이썬 버전 3.9, 프로그램은 idle 사용하고 있습니다. 파일 경로 맞게 다 입력했고 확장명을 jpg나 jpeg, gif 등으로 바꿔서 실행해봐도 photo1 = PhotoImage(file="image/tissue.png") 이 부분부터 똑같은 오류가 발생합니다.

  • 파일을 못 읽는것 같은데... 절대경로 / 상대경로 한번 찾아보세요 이상현 2022.5.26 14:49
  • 절대경로 찾아서 입력해도 똑같은 에러가 납니다 민정연 2022.5.26 15:27

1 답변

  • 좋아요

    1

    싫어요
    채택 취소하기

    임의의 png 파일로 올려주신 코드 테스트해 보았고, 동일한 에러 발생하지 않았습니다. png 파일 읽어오는 데 이상 없었어요.

    코드 자체에는 이상이 없어 보입니다.

    (1) 이미지 파일에 이상이 있거나, (2) 사용하는 파이썬의 tkinter 버전이 특정형식의 png 파일을 처리하지 못하거나. 하는 문제가 아닐까 싶어요. 경로문제였다면, 파일을 찾지 못했다는 에러가 발생했을 겁니다.

    검색해보면, tkinter 의 PhotoImage 가 아닌, pillow 라이브러리를 이용해서 이미지 파일을 읽어주는 예제들이 보입니다. pillow 를 사용하도록 코드를 고쳐보는 게 확실할 것 같고요.

    사용하는 png 파일이 이상할 수 있으니, 다른 png 파일은 읽어지는지도 테스트해 보셨으면 합니다.

    • 이미지 파일에 이상이 있었습니다. 감사합니다!! 이틀 동안 고민했는데 바로 해결됐네요ㅎㅎ 민정연 2022.5.26 23:29

답변을 하려면 로그인이 필요합니다.

프로그래머스 커뮤니티는 개발자들을 위한 Q&A 서비스입니다. 로그인해야 답변을 작성하실 수 있습니다.

(ಠ_ಠ)
(ಠ‿ಠ)