我在工作中有一个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:未知选项" -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选项”这一事实。

无论如何,像Jeff说的那样,你可能想要 create_image 方法。

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top