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()。 希望这会有所帮助。