我在工作中有一个python GUI应用程序,我打算在Windows和Mac上使用它。关于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和做Tk()
),Tkinter很好。我已经在我的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()
方法没有image
论证;它有一个bitmap
参数。
你得到的错误来自于这样一个事实:在Tkinter中,一个Tcl解释器在Python进程中嵌入了运行,所有GUI交互在Python和Tcl之间来回传递;所以,你得到的错误来自于Tcl回复“我在.create_bitmap调用中不知道任何-image选项”的事实。
无论如何,像杰夫所说,你可能想要create_image
方法。