2009-05-05 3 views
1

저는 Windows와 Mac에서 모두 사용할 파이썬 GUI 응용 프로그램을 가지고 있습니다. Tkinter에 관한 문서는 그다지 좋지 않으며 google-fu는 저를 실패 시켰습니다. 한마디로왜 파이썬의 Tkinter는 canvas.create_image를 사용하여 휴식합니까?

, 내가하고 있어요 : 나는 create_bitmap 라인을 주석 경우

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() 

이 앱이 잘립니다. 나는 그것을 다시 언급하면, 나는 다음과 같은 오류가 발생합니다 : 홀수

_tkinter.TclError: unknown option "-image"

합니다. Tkinter는 python 테스트 (즉, _tkinter, Tkinter 가져 오기 및 Tk())에 따르면 괜찮습니다. 나는 PIL을 내 윈도우 셋업 (XP SP3, Python 2.6)에 설치하여 낮은 레벨에서 무거운 물건을 들고 있다고 상상했다. 그것은 그렇게 보이지 않는다. 나는 아직도 전술 한 오류가 발생합니다.

전체 스택 트레이스, 나는 이미 붙여 넣은 코드를 제외하다 : 어떤 빛을 창고에

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)))) 

누구나 할 수?

+0

더 이상 진행하기 전에 아직 Mac에서 앱을 사용해 보셨습니까? 한번은 맥에 이식해야 할 때 악몽을 꾼 리눅스 용 Tkinter 앱을 만들었습니다 : 그것은 X (분명히 Tkinter를위한 기본 아쿠아 지원이 없음) 아래에서 실행되었고, 리눅스 버전에는 한 번도 존재하지 않았던 버그가있었습니다 그것은 마치 sh처럼 보였다. ** Tkinter는 문서화가 잘되어 있지 않다. 커맨드 라인 지향 API는 디버그하는 데 어려움을 주는데, 내 경험으로는 이식성이 없다. PyQt4 또는 wxWindows를 사용하여 앱을 작성하십시오 (더 많은 객체 지향 API 및 훌륭한 문서를 위해 PyQt4를 권장합니다) –

+0

이 시점에서 필자가 확실히 생각하고있는 것은 분명합니다. 궁극적으로, 필자가 작성한 응용 프로그램은 창 작업 응용 프로그램으로 Tk에 익숙해지는 작은 것입니다. 전에 Wx와 어울 렸어. 나는 더 큰 프로젝트를 위해 Qt 나 Wx를 사용하게 될지도 모른다. –

+0

부록 : 어제 내 Mac에서 (그것의 '작동'형태로) 테스트 해. 잘 작동합니다. 여태까지는 그런대로 잘됐다. –

답변

4

Tk에는 두 가지 유형의 그래픽, 비트 맵 및 이미지가 있습니다. 이미지는 비트 맵과 사진의 두 가지 맛이 있습니다. 비트 맵 및 비트 맵 유형의 이미지는 동일한 것이 아니며, 이는 문서에 혼란을 야기합니다. PhotoImage는 photo 유형의 이미지를 만들고 캔버스에 이미지 객체가 필요하므로 이미 결론을 내린 것처럼 create_image를 사용하는 것이 해결책입니다.

2

짧은 대답 : create_image를 사용할 때 create_bitmap을 사용하지 마십시오.

0

create_bitmap() 메서드에는 image 인수가 없습니다. 대신 bitmap 인수가 있습니다.

오류는 Tkinter에서 Tcl 인터프리터가 Python 프로세스에 포함되어 실행 중이며 모든 GUI 상호 작용이 Python과 Tcl 사이를왔다 갔다한다는 ​​사실에서 비롯됩니다. 그래서, 당신이 얻는 에러는 Tcl이 ".create_bitmap 호출에서 어떤 --image 옵션을 모른다"라고 대답한다는 사실에서 나온 것입니다.

제프가 말했듯이 어쨌든 create_image 메서드가 필요합니다.

관련 문제