2017-04-02 3 views
-1

Gibt es eine Möglichkeit, wir können etwas in Boxen zeichnen, so dass wenn Boxen angeordnet sind, damit es ein ganzes Bild erstellt. Ich habe ein Bild gezeichnet und jetzt will ich in Pause in vier Boxen, so dass jedes Feld einen Teil des Bildes zieht:Segmentierte Python Turtle Zeichnung

from turtle import * 
y=0 

def head(): 
    color('green') 
    fd(160) 
    x=xcor() 
    seth(90) 
    begin_fill() 
    #color('green') 
    circle(x/2,180) 
    end_fill() 
    penup() 
    goto(33,37) 
    pendown() 
    dot(13,'black') 
    penup() 
    goto(126,37) 
    pendown() 
    dot(13,'black') 
    penup() 
    home() 
    pendown() 
    hideturtle() 
    fd(160) 
    seth(90) 
    circle(x/2,60) 
    right(90) 
    pensize(5) 
    fd(30) 

    penup() 
    home() 
    #pendown() 
    hideturtle() 
    fd(160) 
    seth(90) 
    circle(x/2,120) 
    right(90) 
    pensize(5) 
    pendown() 
    fd(30) 
    penup() 
    home() 
    penup() 

def body(): 
    pensize(0) 

    home() 
    showturtle() 
    goto(0,-7) 
    pendown() 
    begin_fill() 
    fd(160) 
    right(90) 
    fd(120) 
    right(90) 
    fd(160) 
    y=ycor() 
    right(90) 
    fd(120) 
    end_fill() 

def legs(): 
    penup() 
    #color('red') 
    goto(33,-169) 
    pendown() 
    pensize(32) 
    fd(43) 
    penup() 
    goto(130,-169) 
    pendown() 
    fd(43) 
    penup() 

def hands(): 
    home() 
    pensize(30) 
    goto(-18,-77) 
    pendown() 
    left(90) 
    fd(65) 
    penup() 
    goto(179,77) 
    pendown() 
    fd(65) 
    penup() 
    fd(100) 
    hideturtle() 
    circle(100) 
    circle(100,360,59) 


hideturtle() 

head() 
body() 
legs() 
hands() 
done() 
+0

ZIEHEN teilen Sie bitte den Code, den Sie bisher –

+0

@ TomažBratanič schrieb ich bearbeiten die Frage mit dem Code ich habe soweit geschrieben – Pramodya

+0

Das ist nicht gültig Python-Code. –

Antwort

0

Für eine maximale Kontrolle über die Qualität des Bildes, der beste Ansatz ist, um ein Bild zu brechen extern in separate GIF-Bilder und laden sie in Cursor unter Verwendung der register_shape() und shape() Methoden.

Wenn Sie jedoch wirklich zeichnen möchten, hier ein grobes Beispiel. Ich bin nicht mit ‚Boxen‘, sondern nur Elemente der Form zeichnen, die dann um gezogen werden kann eine endgültige Zeichnung zu produzieren:

from turtle import * 

ANTENNA_WIDTH = 5 
ANTENNA_HEIGHT = 30 
HEAD_RADIUS = 80 

def head(): 

    begin_poly() 

    setheading(90) 
    circle(HEAD_RADIUS, 60) 
    current_heading = heading() 
    setheading(60) 
    forward(ANTENNA_HEIGHT) 
    backward(ANTENNA_HEIGHT) 
    setheading(current_heading) 
    circle(HEAD_RADIUS, 60) 
    current_heading = heading() 
    setheading(120) 
    forward(ANTENNA_HEIGHT) 
    backward(ANTENNA_HEIGHT) 
    setheading(current_heading) 
    circle(HEAD_RADIUS, 60) 

    end_poly() 

    register_shape("head", get_poly()) 

    reset() 

BODY_HEIGHT = 120 

def body(): 

    begin_poly() 

    right(90) 
    forward(BODY_HEIGHT) 
    right(90) 
    forward(HEAD_RADIUS * 2) 
    right(90) 
    forward(BODY_HEIGHT) 

    end_poly() 

    register_shape("body", get_poly()) 

    reset() 

LEG_LENGTH = 43 
LEG_WIDTH = 32 

def legs(): 

    begin_poly() 

    forward(LEG_WIDTH) 
    setheading(-90) 
    forward(LEG_LENGTH) 
    circle(LEG_WIDTH/2, 180) 
    forward(LEG_LENGTH) 
    setheading(0) 

    forward(LEG_WIDTH) 
    setheading(-90) 
    forward(LEG_LENGTH) 
    circle(LEG_WIDTH/2, 180) 
    forward(LEG_LENGTH) 
    setheading(0) 

    forward(LEG_WIDTH) 

    end_poly() 

    register_shape("legs", get_poly()) 

    reset() 

ARM_WIDTH = 30 
ARM_LENGTH = 65 

def arm(): 

    begin_poly() 

    setheading(90) 
    circle(ARM_WIDTH/2, 180) 
    forward(ARM_LENGTH) 
    circle(ARM_WIDTH/2, 180) 

    end_poly() 

    register_shape("arm", get_poly()) 

    reset() 

head() 
head_turtle = Turtle("head") 
head_turtle.color("green") 
head_turtle.setheading(90) 
head_turtle.penup() 
head_turtle.goto(150, 150) 

body() 
body_turtle = Turtle("body") 
body_turtle.color("green") 
body_turtle.setheading(90) 
body_turtle.penup() 
body_turtle.goto(-150, -150) 

legs() 
legs_turtle = Turtle("legs") 
legs_turtle.color("green") 
legs_turtle.setheading(90) 
legs_turtle.penup() 
legs_turtle.goto(150, -150) 

arm() 
left_arm_turtle = Turtle("arm") 
left_arm_turtle.color("green") 
left_arm_turtle.setheading(90) 
left_arm_turtle.penup() 
left_arm_turtle.goto(-150, 150) 

right_arm_turtle = Turtle("arm") 
right_arm_turtle.color("green") 
right_arm_turtle.setheading(90) 
right_arm_turtle.penup() 
right_arm_turtle.goto(0, 0) 

hideturtle() 

def drag_handler(turtle, x, y): 
    turtle.ondrag(None) # disable ondrag event inside drag_handler 
    turtle.goto(x, y) 
    turtle.ondrag(lambda x, y, turtle=turtle: drag_handler(turtle, x, y)) 

head_turtle.ondrag(lambda x, y: drag_handler(head_turtle, x, y)) 
body_turtle.ondrag(lambda x, y: drag_handler(body_turtle, x, y)) 
legs_turtle.ondrag(lambda x, y: drag_handler(legs_turtle, x, y)) 
left_arm_turtle.ondrag(lambda x, y: drag_handler(left_arm_turtle, x, y)) 
right_arm_turtle.ondrag(lambda x, y: drag_handler(right_arm_turtle, x, y)) 

mainloop() 

Obwohl die Schildkröte Dokumentation zeigt nur goto() als Drag-Ereignishandler verwenden, Sie haben gewonnen Sei nicht glücklich mit dem Ergebnis. Der obige Handler ist nur ein goto() Code, der das Ereignis deaktiviert und wieder aktiviert, sodass sie beim Ziehen des Elements nicht gestapelt werden.

Startbildschirm

enter image description here

Bildschirm nach

enter image description here