这是我的代码:
from tkinter import *
import turtle as t
import random
bob=Tk()
t.setup(width = 200,height = 200)
t.bgpic(picname="snakesandladders.gif")
def left(event):
t.begin_fill()
print("left")
t.left(90)
def right(event):
print("right")
t.right(90)
def forward(event):
print("forward")
t.forward(100)
block = Frame(bob, width=300, height=250)
bob.bind("<a>", left)
bob.bind("<d>", right)
bob.bind("<w>", forward)
block.pack()
bob.mainloop()
我的错误是:
Traceback (most recent call last):
File "/Users/lolszva/Documents/test game.py", line 6, in <module>
t.bgpic(picname="snakesandladders.gif")
File "<string>", line 8, in bgpic
File "/Library/Frameworks/Python.framework/Versions/3.7/lib/python3.7/turtle.py", line 1481, in bgpic
self._bgpics[picname] = self._image(picname)
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 3545, 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 3501, in __init__
self.tk.call(('image', 'create', imgtype, name,) + options)
_tkinter.TclError: couldn't open "snakesandladders.gif": no such file or directory
我是一个初学者,所以我真的不知道我是否没有导入库。在另一个类似的问题中,bgpic()
不起作用,它说将图片转换为gif,但对我来说仍然不起作用。我正在使用Mac OSX Python版本3.8.0。
答案 0 :(得分:1)
尽管您的问题是缺少GIF文件,但是即使该文件存在且位于正确的目录中,您的程序仍将失败。
第二个问题是您在tkinter之上调用了独立的turtle。您可以运行乌龟 standalone 在其中设置基础tkinter根目录和窗口,也可以在tkinter中运行乌龟 embedded 在其中设置乌龟的根目录和画布漫游。但是在您创建的tkinter根上单独调用turtle会失败,并显示以下错误:
...
self.tk.call(_flatten((self._w, cmd)) + self._options(cnf))
_tkinter.TclError: image "pyimage2" doesn't exist
以下是在独立乌龟中实现程序的方法:
from turtle import Screen, Turtle
def left():
turtle.left(90)
def right():
turtle.right(90)
def forward():
turtle.forward(100)
screen = Screen()
screen.setup(width=200, height=200)
screen.bgpic(picname="snakesandladders.gif")
screen.onkey(left, "a")
screen.onkey(right, 'd')
screen.onkey(forward, 'w')
turtle = Turtle()
screen.listen()
screen.mainloop()
将GIF背景图片与源代码放在同一目录中。
如果要在Turtle画布旁边添加tkinter小部件,则只需要 embedded 即可。请参见RawTurtle
和TurtleScreen
的文档。
与您的forward()
距离相比,您的窗口尺寸较小-您可能需要调整其中一个。