2016-04-11 23 views
0

Grafik grafik üzerinde bir çizgi yapmak için veri kullanan bir kaplumbağa programı yazdım. Her şey, grafik çizgilerinde make_line() öğesini çağırmak dışında iyi çalışır. Goto hayret ediyor ama bir çizgi çizmiyor. While döngüsüne girmeden önce bir turtle.down() koysam bile, bir çizgi çizmiyor.python turtle goto çalışmıyor

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

Lütfen girintiyi düzeltin – Kidus

+0

Tamam, make_line() '3 argüman alır, ancak" chartlines "işlevinde 4 veriyorsunuz. – Kidus

+0

Ben boşluk ile yaptım, çünkü web sitesinde gönder düğmesine basıyorum sekmesine basın. Bunun için üzgünüm, projemde bunu çıkarmıştım zaten onu eklemeyi unuttum –

cevap

1

Sorun, Change_tekenpunt işlevindedir. Grafiği çizerken turtle.down()'u saklamanız gerekir. Yani, aşağıdaki gibi Change_tekenpunt işlevine bazı değişiklikler yapmak gerekir: Sen grafik hatları ve ayrıca grafik çizmek için bu işlevi kullanın

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

. Ek bir up argümanı ekledim (varsayılan olarak True) çünkü bir grafik çizdiğinizde bunu False olarak ayarlamanız gerekiyor. Hareket halindeyken aşağı olmalı. Bu nedenle, make_line işlevinde, while döngüsünde Change_tekenpunt işlev çağrısına False bağımsız değişkenini ekleyin.

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 

Son olarak, chartlines işlevi, (1, 0) için .tracer ayarlayın.

char.tracer(0,0)

char.tracer(1,0) 

Yoksa yerineChange_tekenpunt işlevi sonunda turtle.update() ekleyebilir. Bu yardımcı olur umarım.