我正在 Turtle 中生成图表,作为程序的一部分,我从图表中识别出某些坐标。我希望能够隐藏完整的 turtle 窗口,因为我只关心坐标,这可能吗?
编辑:
问题2:
这不是真正的答案,而是其他一些问题。
我的程序在某种程度上可以正常工作,如果您在 IDLE 中运行它并键入“l”,它将为您提供带有坐标的列表。
import Tkinter
import turtle
from turtle import rt, lt, fd # Right, Left, Forward
size = 10
root = Tkinter.Tk()
root.withdraw()
c = Tkinter.Canvas(master = root)
t = turtle.RawTurtle(c)
t.speed("Fastest")
# List entire coordinates
l = []
def findAndStoreCoords():
x = t.xcor()
y = t.ycor()
x = round(x, 0) # Round x to the nearest integer
y = round(y, 0) # Round y to the nearest integer
# Integrate coordinates into sub-list
l.append([x, y])
def hilbert(level, angle):
if level == 0:
return
t.rt(angle)
hilbert(level - 1, -angle)
t.fd(size)
findAndStoreCoords()
t.lt(angle)
hilbert(level - 1, angle)
t.fd(size)
findAndStoreCoords()
hilbert(level - 1, angle)
t.lt(angle)
t.fd(size)
findAndStoreCoords()
hilbert(level - 1, -angle)
t.rt(angle)
问题是 turtle 太慢了!有没有像 Turtle 一样但可以更快地执行命令的包?
最佳答案
我按照三十七的建议重新实现了 turtle 类。与api一致。 (即当你在这个类中右转时,它与 turtle
中的右转相同。
这并没有实现api中的所有方法,只实现了常用的方法。 (以及您使用的那些)。
但是,它的扩展很短而且相当简单。此外,它会跟踪它已经到达的所有点。它通过在每次调用 forward、backward 或 setpos(或这些函数的任何别名)时向 pointsVisited 添加一个条目来实现此目的。
import math
class UndrawnTurtle():
def __init__(self):
self.x, self.y, self.angle = 0.0, 0.0, 0.0
self.pointsVisited = []
self._visit()
def position(self):
return self.x, self.y
def xcor(self):
return self.x
def ycor(self):
return self.y
def forward(self, distance):
angle_radians = math.radians(self.angle)
self.x += math.cos(angle_radians) * distance
self.y += math.sin(angle_radians) * distance
self._visit()
def backward(self, distance):
self.forward(-distance)
def right(self, angle):
self.angle -= angle
def left(self, angle):
self.angle += angle
def setpos(self, x, y = None):
"""Can be passed either a tuple or two numbers."""
if y == None:
self.x = x[0]
self.y = y[1]
else:
self.x = x
self.y = y
self._visit()
def _visit(self):
"""Add point to the list of points gone to by the turtle."""
self.pointsVisited.append(self.position())
# Now for some aliases. Everything that's implemented in this class
# should be aliased the same way as the actual api.
fd = forward
bk = backward
back = backward
rt = right
lt = left
setposition = setpos
goto = setpos
pos = position
ut = UndrawnTurtle()
关于python - 隐藏 turtle 窗?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/7236879/