도대체 Tkinter가 canvas.create_image를 사용하여 중단되는 이유는 무엇입니까?

StackOverflow https://stackoverflow.com/questions/824988

문제

저는 Windows와 Mac 모두에서 사용할 Python GUI 앱을 작업 중입니다.Tkinter에 대한 문서는 최고가 아니며 google-fu는 나에게 실패했습니다.

간단히 말해서, 나는 다음을 하고 있습니다:

c = Canvas(
    master=frame,
    width=settings.WINDOW_SIZE[0],
    height=settings.WINDOW_SIZE[1],
    background=settings.CANVAS_COLOUR
)
file = PhotoImage(file=os.path.join('path', 'to', 'gif'))
c.create_bitmap(position, image=file)
c.pack()
root.mainloop()

create_bitmap 줄을 주석 처리하면 앱이 제대로 그려집니다.다시 주석을 달면 다음 오류가 발생합니다.

_tkinter.TclError: unknown option "-image"

이상하네요.Python 테스트에 따르면 Tkinter는 괜찮습니다(예: _tkinter, Tkinter 가져오기 및 수행). Tk()).그 이후로 저는 Windows 설정(XP SP3, Python 2.6)에 대해 PIL을 설치했는데, 이것이 낮은 수준에서 무거운 작업을 수행하고 있다고 상상했습니다.그렇지 않은 것 같습니다.앞서 언급한 오류가 계속 발생합니다.

이미 붙여넣은 코드를 제외한 전체 스택 추적은 다음과 같습니다.

File "C:\Python26\lib\lib-tk\Tkinter.py", line 2153, in create_bitmap
return self._create('bitmap', args, kw)
File "C:\Python26\lib\lib-tk\Tkinter.py", line 2147, in _create
*(args + self._options(cnf, kw))))

누구든지 빛을 비출 수 있습니까?

도움이 되었습니까?

해결책

Tk에는 비트맵과 이미지라는 두 가지 유형의 그래픽이 있습니다.이미지는 비트맵과 사진의 두 가지 형태로 제공됩니다.비트맵 유형의 비트맵과 이미지는 동일한 것이 아니므로 문서에서 혼란을 야기합니다.PhotoImage는 photo 유형의 이미지를 생성하고 캔버스에 이미지 개체가 필요하므로 솔루션은 이미 결론을 내린 것처럼 create_image를 사용하는 것입니다.

다른 팁

짧은 답변 : create_image를 사용하려는 경우 create_bitmap을 사용하지 마십시오.

그만큼 create_bitmap() 메소드에는 AN이 없습니다 image 논쟁; 그것은 있습니다 bitmap 대신 논쟁.

당신이 얻는 오류는 Tkinter에서 TCL 통역사가 Python 프로세스에 내장되어 있고 모든 GUI 상호 작용이 Python과 TCL 사이의 앞뒤로 진행된다는 사실에서 비롯됩니다. 따라서 오류는 TCL이 ".Create_BitMap 호출에서 -Image 옵션을 모른다"는 사실에서 비롯됩니다.

어쨌든 Jeff가 말했듯이 create_image 방법.

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top