簡體   English   中英

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)

add turtle.update() at the end of the Change_tekenpunt function. 或者你也可以添加turtle.update()在結束Change_tekenpunt功能。 希望這可以幫助。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM