1

我有一个正在运行的 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 和doing 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))))

任何人都能够阐明任何启示?

4

3 回答 3

4

Tk 有两种类型的图形,位图和图像。图像有两种风格,位图和照片。位图和位图类型的图像不是一回事,这会导致文档混乱。PhotoImage 创建一个类型为 photo 的图像,并且在画布中需要一个图像对象,因此正如您已经得出的结论,解决方案是使用 create_image。

于 2009-05-05T16:05:38.730 回答
2

简短的回答:当您打算使用 create_image 时,不要使用 create_bitmap。

于 2009-05-05T15:41:44.993 回答
0

create_bitmap()方法没有image参数;相反,它有一个bitmap论点。

您得到的错误来自于在 Tkinter 中,一个 Tcl 解释器正在运行,嵌入在 Python 进程中,并且所有 GUI 交互在 Python 和 Tcl 之间来回进行;因此,您得到的错误来自 Tcl 回复“我不知道 .create_bitmap 调用中的任何 -image 选项”这一事实。

无论如何,就像 Jeff 所说,您可能需要该create_image方法。

于 2009-05-06T07:44:52.293 回答