【发布时间】:2013-08-24 13:31:21
【问题描述】:
我似乎无法让我的 PIL 图像在画布上工作。代码:
from Tkinter import*
import Image, ImageTk
root = Tk()
root.geometry('1000x1000')
canvas = Canvas(root,width=999,height=999)
canvas.pack()
image = ImageTk.PhotoImage("ball.gif")
imagesprite = canvas.create_image(400,400,image=image)
root.mainloop()
错误:
Traceback (most recent call last):
File "C:/Users/Mark Malkin/Desktop/3d Graphics Testing/afdds.py", line 7, in <module>
image = ImageTk.PhotoImage("ball.gif")
File "C:\Python27\lib\site-packages\PIL\ImageTk.py", line 109, in __init__
mode = Image.getmodebase(mode)
File "C:\Python27\lib\site-packages\PIL\Image.py", line 245, in getmodebase
return ImageMode.getmode(mode).basemode
File "C:\Python27\lib\site-packages\PIL\ImageMode.py", line 50, in getmode
return _modes[mode]
KeyError: 'ball.gif'
我需要使用 PIL 图像而不是 PhotoImages,因为我想调整图像大小。请不要因为我想使用 Tkinter 而建议切换到 Pygame。
【问题讨论】:
-
我很困惑——你说你不想使用
PhotoImages,但你的代码使用了PhotoImage。您的意思是要使用ImageTk.PhotoImage而不是Tkinter.PhotoImage? -
您是否尝试过阅读
PhotoImage的文档?它需要一个图像对象,或者一个模式和一个大小。你也没有通过它;你正在传递一个文件名。 (return _modes[mode]上的KeyError非常明显地表明它正在尝试将文件名视为一种模式……但不管它尝试了哪个模式,它都会失败。)
标签: python tkinter python-imaging-library tkinter-canvas