Я пытаюсь изменить форму черепахи на 8-битный образ изображения. У меня есть изображение, которое я хочу сохранить в том же каталоге, что и мой исходный код (вы можете видеть это с помощью os.getcwd()
.) Мне интересно, почему я получаю эту ошибку и как ее исправить. Спасибо!
from turtle import Turtle, Screen
import os
print(os.getcwd())
wn = Screen()
wn.bgcolor('lightblue')
spaceship = Turtle()
spaceship.color('red')
newshape = Screen().addshape('8bitlink.png.gif')
spaceship.shape(newshape)
spaceship.penup()
Ошибка выглядит так:
Traceback (most recent call last):
File "/Users/colind/Desktop/Spaceship Game.py", line 12, in <module>
newshape = Screen().addshape('8bitlink.png.gif')
File "/Library/Frameworks/Python.framework/Versions/3.7/lib/python3.7/turtle.py", line 1133, in register_shape
shape = Shape("image", self._image(name))
File "/Library/Frameworks/Python.framework/Versions/3.7/lib/python3.7/turtle.py", line 479, in _image
return TK.PhotoImage(file=filename)
File "/Library/Frameworks/Python.framework/Versions/3.7/lib/python3.7/tkinter/__init__.py", line 3542, in __init__
Image.__init__(self, 'photo', name, cnf, master, **kw)
File "/Library/Frameworks/Python.framework/Versions/3.7/lib/python3.7/tkinter/__init__.py", line 3498, in __init__
self.tk.call(('image', 'create', imgtype, name,) + options)
_tkinter.TclError: couldn't open "8bitlink.png.gif": no such file or directory
Одна из проблем заключается в том, что вы не вызываете addshape()
правильно:
newshape = Screen().addshape('8bitlink.png.gif')
spaceship.shape(newshape)
Поскольку addshape()
ничего не возвращает, он регистрирует форму изображения под именем файла, поэтому вместо этого вы должны сделать что-то вроде:
from turtle import Turtle, Screen
wn = Screen()
wn.bgcolor('lightblue')
wn.addshape('8bitlink.png.gif')
spaceship = Turtle()
spaceship.shape('8bitlink.png.gif')
spaceship.color('red')
spaceship.penup()
# ...
wn.mainloop()
Это работает для меня, когда я храню изображение GIF под названием "8bitlink.png.gif". Вы можете убедить себя и нас, что у вас есть фактическое изображение GIF, запустив команду file
Unix:
> file 8bitlink.png.gif
8bitlink.png.gif: GIF image data, version 89a, 24 x 24
>
Вы должны быть похожими, но не одинаковыми.