2016-04-11 10 views
0

私は、データを使ってグラフチャート上に線をつくるカメプログラムを作成しました。チャートラインでmake_line()を呼び出す以外はすべて正常に動作します。 gotoはexcecutedですが、線を引くことはありません。 Whileループに入る前にturtle.down()を置いても、それは線を描画しません。python turtle gotoが動作していません

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) 
+0

インデントを修正してください。 – Kidus

+0

「make_line()は3つの引数をとりますが、 'chartlines'関数で4を指定しています。 – Kidus

+0

私はスペースを使っていましたので、私はタブを押します。私はウェブサイトの送信ボタンに行きます。申し訳ありませんが、私は自分のプロジェクトで既にこれを追加することを忘れていたので、これを取り出しました –

答えて

1

問題がChange_tekenpunt機能です。グラフを描いている間はturtle.down()のままにする必要があります。だから、あなたは次のようにChange_tekenpunt機能にいくつかの変更を加える必要があります:あなたはグラフの線ともグラフを描画するために、この機能を使用

def Change_tekenpunt(x,y,up=True): 
    if up: 
     turtle.up() 
    turtle.goto(x,y) 
    turtle.down() 

。グラフを描画するたびにFalseに設定する必要があるため、余分なup引数(デフォルトはTrue)を追加しました。それは動いている間、下になければならない。したがって、make_line関数のwhileループでは、Change_tekenpunt関数呼び出しにFalse引数を追加します。

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機能において、(1, 0).tracerを設定。

char.tracer(0,0)

char.tracer(1,0) 

それとも代わりChange_tekenpunt関数の最後にturtle.update()を追加することができます。 これが役立つことを願っています。

関連する問題