python turtle goto 不工作
python turtle goto is not working
我写了一个海龟程序,它使用数据在图表上画一条线。一切正常,除了我在图表中调用 make_line() 。 goto 被执行但没有划线。即使我在进入 While 循环之前放置一个 turtle.down() 它也不会画一条线。
import turtle
def Change_tekenpunt(x,y):
turtle.up()
turtle.goto(x,y)
turtle.down()
def xAxisTurtle(days):
xAxis = turtle
xAxis.ht()
Change_tekenpunt(-300, -220)
x = -275
for i in range(0,days+1):
xAxis.write(i)
Change_tekenpunt(x, -220)
x+=25
def yAxisTurtle():
yAxis = turtle
yAxis.ht()
Change_tekenpunt(-310, -200)
y = -160
for i in range(0, 1601, 200):
yAxis.write(i)
Change_tekenpunt(-330, y)
y+=50
def point():
turtle.begin_fill() # Begin to fill color in a shape
turtle.color("black")
turtle.circle(3) # Draw a circle
turtle.end_fill() # Fill the shape
def make_line(x, y,gegevens):
Change_tekenpunt(x,y)
i = 0
while i < len(gegevens):
y = gegevens[i][0]
y //= 4
Change_tekenpunt(x,y)
x+=25
i+=1
def chartlines(x,y,days, gegevens):
char = turtle
Change_tekenpunt(x,y)
char.tracer(0,0)
char.speed(0)
char.ht()
point()
for i in range(days):
char.forward(25)
char.left(270)
point()
char.left(90)
char.left(180)
char.forward(25*days)
char.left(270)
for i in range(8):
char.forward(50)
char.left(90)
point()
char.left(270)
char.left(180)
char.forward(400)
xAxisTurtle(days)
yAxisTurtle()
make_line(x, y,gegevens)
问题出在 Change_tekenpunt
函数中。绘制图形时需要保留 turtle.down()
。因此,您需要对 Change_tekenpunt
函数进行如下更改:
def Change_tekenpunt(x,y,up=True):
if up:
turtle.up()
turtle.goto(x,y)
turtle.down()
您可以使用此功能绘制图表线和图形。我添加了一个额外的 up
参数(默认为 True
),因为在绘制图形时需要将其设置为 False
。它在移动时必须向下。因此,在 make_line
函数中,在 while 循环中,将 False
参数添加到 Change_tekenpunt
函数调用中。
def make_line(x, y,gegevens):
Change_tekenpunt(x,y)
i = 0
while i < len(gegevens):
y = gegevens[i][0]
y //= 4
Change_tekenpunt(x, y, False) #add the False argument here
x+=25
i+=1
最后,在chartlines
函数中,将.tracer
设置为(1, 0)
。
char.tracer(0,0)
char.tracer(1,0)
或者您可以 代替 在 Change_tekenpunt
函数的末尾添加 turtle.update()
。
希望这会有所帮助。
我写了一个海龟程序,它使用数据在图表上画一条线。一切正常,除了我在图表中调用 make_line() 。 goto 被执行但没有划线。即使我在进入 While 循环之前放置一个 turtle.down() 它也不会画一条线。
import turtle
def Change_tekenpunt(x,y):
turtle.up()
turtle.goto(x,y)
turtle.down()
def xAxisTurtle(days):
xAxis = turtle
xAxis.ht()
Change_tekenpunt(-300, -220)
x = -275
for i in range(0,days+1):
xAxis.write(i)
Change_tekenpunt(x, -220)
x+=25
def yAxisTurtle():
yAxis = turtle
yAxis.ht()
Change_tekenpunt(-310, -200)
y = -160
for i in range(0, 1601, 200):
yAxis.write(i)
Change_tekenpunt(-330, y)
y+=50
def point():
turtle.begin_fill() # Begin to fill color in a shape
turtle.color("black")
turtle.circle(3) # Draw a circle
turtle.end_fill() # Fill the shape
def make_line(x, y,gegevens):
Change_tekenpunt(x,y)
i = 0
while i < len(gegevens):
y = gegevens[i][0]
y //= 4
Change_tekenpunt(x,y)
x+=25
i+=1
def chartlines(x,y,days, gegevens):
char = turtle
Change_tekenpunt(x,y)
char.tracer(0,0)
char.speed(0)
char.ht()
point()
for i in range(days):
char.forward(25)
char.left(270)
point()
char.left(90)
char.left(180)
char.forward(25*days)
char.left(270)
for i in range(8):
char.forward(50)
char.left(90)
point()
char.left(270)
char.left(180)
char.forward(400)
xAxisTurtle(days)
yAxisTurtle()
make_line(x, y,gegevens)
问题出在 Change_tekenpunt
函数中。绘制图形时需要保留 turtle.down()
。因此,您需要对 Change_tekenpunt
函数进行如下更改:
def Change_tekenpunt(x,y,up=True):
if up:
turtle.up()
turtle.goto(x,y)
turtle.down()
您可以使用此功能绘制图表线和图形。我添加了一个额外的 up
参数(默认为 True
),因为在绘制图形时需要将其设置为 False
。它在移动时必须向下。因此,在 make_line
函数中,在 while 循环中,将 False
参数添加到 Change_tekenpunt
函数调用中。
def make_line(x, y,gegevens):
Change_tekenpunt(x,y)
i = 0
while i < len(gegevens):
y = gegevens[i][0]
y //= 4
Change_tekenpunt(x, y, False) #add the False argument here
x+=25
i+=1
最后,在chartlines
函数中,将.tracer
设置为(1, 0)
。
char.tracer(0,0)
char.tracer(1,0)
或者您可以 代替 在 Change_tekenpunt
函数的末尾添加 turtle.update()
。
希望这会有所帮助。