我猜你想做这样的事情:
from turtle import Turtle
import shelve
yertle = Turtle()
yertle.goto(100, 100)
myrtle = Turtle()
myrtle.goto(-200, -200)
dots = {
'A': [yertle, yertle.xcor(), yertle.ycor()],
'B': [myrtle, myrtle.xcor(), myrtle.ycor()],
}
with shelve.open('VisualData') as shelfFile:
shelfFile['Dots'] = dots
但是当我运行上面的时候,我得到了错误:
TypeError: cannot pickle '_tkinter.tkapp' object
我发现讨论的内容:
还有类似的答案。如果我想腌制一只乌龟,我可能会结合position() 和heading() 来查看pen() 函数,它描述了乌龟的大部分本质并且很容易腌制(如果不是JSON'd):
from turtle import Turtle
import shelve
yertle = Turtle()
yertle.color('green')
yertle.goto(100, 100)
myrtle = Turtle()
myrtle.color('red')
myrtle.goto(-200, -200)
myrtle.right(45)
dots = {
'A': [yertle.pen(), yertle.position(), yertle.heading()],
'B': [myrtle.pen(), myrtle.position(), myrtle.heading()],
}
with shelve.open('VisualData') as shelfFile:
shelfFile['Dots'] = dots
然后我们可以使用以下方法恢复我们的海龟:
from turtle import Screen, Turtle
import shelve
screen = Screen()
with shelve.open('VisualData') as shelfFile:
dots = shelfFile['Dots']
pen, position, heading = dots['A']
yertle = Turtle()
yertle.pen(pen)
yertle.penup()
yertle.setposition(position)
yertle.setheading(heading)
pen, position, heading = dots['B']
myrtle = Turtle()
myrtle.pen(pen)
myrtle.penup()
myrtle.setposition(position)
myrtle.setheading(heading)
yertle.pendown()
yertle.circle(100)
myrtle.pendown()
for _ in range(4):
myrtle.forward(100)
myrtle.right(90)
screen.exitonclick()
我们应该从海龟被腌制之前所在的位置开始绘制这些新图,并以它们原来的颜色等方式绘制。