2016-09-29 1 views
0

Ich habe versucht, eine Antwort auf diese über das Internet zu finden, und kann einfach nichts finden, was funktioniert.Lassen Sie den Python Turtle Bildschirm sich selbst anpassen, um anzuzeigen, was gezeichnet wurde?

Im Wesentlichen baue ich mein allererstes Programm, das ein digital spirograph ist. Eine der Eigenschaften davon ist, dass die Schildkröte zufällig eine Form mit ziemlich chaotischen Variablen zeichnen kann.

Mein Problem ist, dass wenn ich dies tue, die Schildkröte fast immer aus den Grenzen des Turtle-Fensters herauszieht, so dass der Benutzer nicht die vollständige Zeichnung am Ende sehen kann.

  • Gibt es eine einfache Möglichkeit, die Größe des Bildschirms an die Grenzen dessen anzupassen, was nach dem Abschluss der Turtle gezeichnet wurde?
  • Ich bin mir nicht sicher, ob ich meinen Code auflisten sollte, da er an dieser Stelle ein paar hundert Zeilen lang ist, aber wenn das nötig ist, lassen Sie es mich wissen.

    Edit: Hier ist mein Code, wie es derzeit geschrieben wird -

    import turtle 
    import random 
    
    print("Random Mode? y/n") 
    crazy = raw_input() 
    crazy = str(crazy) 
    if crazy == 'y' : 
        print("Would you like your random selection to be chaotic? y/n") 
        chaos = raw_input() 
        chaos = str(chaos) 
        if chaos == 'y' : 
         passes_r = random.randint(4,15) 
         angle_r1 = random.randint(1,180) 
         angle_r2 = random.randint(1,180) 
         angle_r3 = random.randint(1,180) 
         angle_r4 = random.randint(1,180) 
         angle_r5 = random.randint(1,180) 
         angle_r6 = random.randint(1,180) 
         angle_r7 = random.randint(1,180) 
         angle_r8 = random.randint(1,180) 
         chaos_r1 = random.randint(0,360) 
         chaos_r2 = random.randint(0,360) 
         chaos_r3 = random.randint(0,360) 
         chaos_r4 = random.randint(0,360) 
         chaos_r5 = random.randint(0,360) 
         chaos_r6 = random.randint(0,360) 
         chaos_r7 = random.randint(0,360) 
         chaos_r8 = random.randint(0,360) 
    
    
         shape_r = ['arrow', 'turtle', 'circle', 'square', 'triangle',  'classic'] 
         turtle.shape(random.choice(shape_r)) 
         turtle.speed(0) 
    
         print("Calculating shape based on random input: ") + str(angle_r1) + ", " + str(angle_r2) + ", " + str(angle_r3) + ", " + str(angle_r4) + ", " + str(angle_r5) + ", " + str(angle_r6) + ", " + str(angle_r7) + ", " + str(angle_r8) 
    
         for _ in range(passes_r): 
    
          turtle.color('red') 
          turtle.left(angle_r1) 
    
          for _ in range(4): 
           turtle.forward(100) 
           turtle.left(chaos_r1) 
    
          turtle.color('blue') 
          turtle.left(angle_r2) 
    
          for _ in range(4): 
            turtle.forward(100) 
            turtle.left(chaos_r2) 
    
          turtle.color('green') 
          turtle.left(angle_r3) 
    
          for _ in range(4): 
           turtle.forward(100) 
           turtle.left(chaos_r3) 
    
          turtle.color('yellow') 
          turtle.left(angle_r4) 
    
          for _ in range(4): 
           turtle.forward(100) 
           turtle.left(chaos_r4) 
    
          turtle.left(angle_r5) 
    
          for _ in range(4): 
           turtle.forward(100) 
           turtle.left(chaos_r5) 
    
          turtle.color('green') 
          turtle.left(angle_r6) 
    
          for _ in range(4): 
           turtle.forward(100) 
           turtle.left(chaos_r6) 
    
          turtle.color('blue') 
          turtle.left(angle_r7) 
    
          for _ in range(4): 
           turtle.forward(100) 
           turtle.left(chaos_r7) 
    
          turtle.color('red') 
          turtle.left(angle_r8) 
    
          for _ in range(4): 
           turtle.forward(100) 
           turtle.left(chaos_r8) 
    
    
    
    
        elif chaos == 'n' : 
         passes_r = random.randint(4,15) 
         angle_r1 = random.randint(1,180) 
         angle_r2 = random.randint(1,180) 
         angle_r3 = random.randint(1,180) 
         angle_r4 = random.randint(1,180) 
         angle_r5 = random.randint(1,180) 
         angle_r6 = random.randint(1,180) 
         angle_r7 = random.randint(1,180) 
         angle_r8 = random.randint(1,180) 
    
         shape_r = ['arrow', 'turtle', 'circle', 'square', 'triangle', 'classic'] 
         turtle.shape(random.choice(shape_r)) 
         turtle.speed(0) 
    
         print("Calculating shape based on random input: ") + str(angle_r1) + ", " + str(angle_r2) + ", " + str(angle_r3) + ", " + str(angle_r4) + ", " + str(angle_r5) + ", " + str(angle_r6) + ", " + str(angle_r7) + ", " + str(angle_r8) 
    
         for _ in range(passes_r): 
    
          turtle.color('red') 
          turtle.left(angle_r1) 
    
          for _ in range(4): 
           turtle.forward(100) 
           turtle.left(90) 
    
          turtle.color('blue') 
          turtle.left(angle_r2) 
    
          for _ in range(4): 
           turtle.forward(100) 
           turtle.left(90) 
    
          turtle.color('green') 
          turtle.left(angle_r3) 
    
          for _ in range(4): 
           turtle.forward(100) 
           turtle.left(90) 
    
          turtle.color('yellow') 
          turtle.left(angle_r4) 
    
          for _ in range(4): 
           turtle.forward(100) 
           turtle.left(90) 
    
          turtle.left(angle_r5) 
    
          for _ in range(4): 
           turtle.forward(100) 
           turtle.left(90) 
    
          turtle.color('green') 
          turtle.left(angle_r6) 
    
          for _ in range(4): 
           turtle.forward(100) 
           turtle.left(90) 
    
          turtle.color('blue') 
          turtle.left(angle_r7) 
    
          for _ in range(4): 
           turtle.forward(100) 
           turtle.left(90) 
    
          turtle.color('red') 
          turtle.left(angle_r8) 
    
          for _ in range(4): 
           turtle.forward(100) 
           turtle.left(90) 
    
    
    elif crazy == 'n' : 
    
        print("Enter number of repeats -") 
        passes = raw_input() # passes is called in line 23 for range 
        passes = int(passes) 
    
        print("Enter Shape: Arrow, Turtle, Circle, Square, Triangle, or Classic") 
        shape = raw_input().lower() # Selects the shape of the turtle 
    
        print("Enter Speed: (# 0 through 10: 0 is the fastest)") 
        user_speed = raw_input() 
        user_speed = int(user_speed) 
    
        print("Enter Angle 1 (# between 1 and 180)") 
        angle_1 = raw_input() 
        angle_1 = int(angle_1) 
    
        print("Enter Angle 2 (# between 1 and 180)") 
        angle_2 = raw_input() 
        angle_2 = int(angle_2) 
    
        print("Enter Angle 3 (# between 1 and 180)") 
        angle_3 = raw_input() 
        angle_3 = int(angle_3) 
    
        print("Enter Angle 4 (# between 1 and 180)") 
        angle_4 = raw_input() 
        angle_4 = int(angle_4) 
    
        print("Enter Angle 5 (# between 1 and 180)") 
        angle_5 = raw_input() 
        angle_5 = int(angle_5) 
    
        print("Enter Angle 6 (# between 1 and 180)") 
        angle_6 = raw_input() 
        angle_6 = int(angle_6) 
    
        print("Enter Angle 7 (# between 1 and 180)") 
        angle_7 = raw_input() 
        angle_7 = int(angle_7) 
    
        print("Enter Angle 8 (# between 1 and 180)") 
        angle_8 = raw_input() 
        angle_8 = int(angle_8) 
    
        print("Auto size y or n?") 
        auto_size = raw_input().lower() 
        auto_size = str(auto_size) 
        if auto_size == 'y' : 
         auto_size = str('auto') 
         turtle.resizemode(auto_size) 
        elif auto_size == 'n' : 
         auto_size = str('noresize') 
         print("what size? Enter a number from 1 to 10.") 
         user_size = raw_input() 
         user_size = int(user_size) 
         turtle.pensize(user_size) 
    
    
    
    
        turtle.shape(shape) 
        turtle.speed(user_speed) 
        #turtle.resizemode(auto_size) 
    
        print("Calculating shape based on user input: ") + str(angle_1) + ", " + str(angle_2) + ", " + str(angle_3) + ", " + str(angle_4) + ", " + str(angle_5) + ", " + str(angle_6) + ", " + str(angle_7) + ", " + str(angle_8) 
    
        for _ in range(passes): 
    
         turtle.color('red') 
         turtle.left(angle_1) 
    
         for _ in range(4): 
          turtle.forward(100) 
          turtle.left(90) 
    
         turtle.color('blue') 
         turtle.left(angle_2) 
    
         for _ in range(4): 
          turtle.forward(100) 
          turtle.left(90) 
    
         turtle.color('green') 
         turtle.left(angle_3) 
    
         for _ in range(4): 
          turtle.forward(100) 
          turtle.left(90) 
    
         turtle.color('yellow') 
         turtle.left(angle_4) 
    
         for _ in range(4): 
          turtle.forward(100) 
          turtle.left(90) 
    
         turtle.left(angle_5) 
    
         for _ in range(4): 
          turtle.forward(100) 
          turtle.left(90) 
    
         turtle.color('green') 
         turtle.left(angle_6) 
    
         for _ in range(4): 
          turtle.forward(100) 
          turtle.left(90) 
    
         turtle.color('blue') 
         turtle.left(angle_7) 
    
         for _ in range(4): 
          turtle.forward(100) 
          turtle.left(90) 
    
         turtle.color('red') 
         turtle.left(angle_8) 
    
         for _ in range(4): 
          turtle.forward(100) 
          turtle.left(90) 
    
    
    turtle.exitonclick() 
    
    +0

    Codes sind immer willkommen in Stackoverflow. Bitte bearbeiten Sie Ihre Frage mit Code. – Atf

    Antwort

    0

    Größe des Fensters den folgenden Code in Python mit

    Durch die Art und Weise Ihre Frage dupliziert wird, denke ich.

    Python imaging, resize Turtle Graphics window

    setup(width = 200, height = 200, startx = None, starty = None) 
    
    +0

    Also, wenn ich das mache, bekomme ich den Fehler; NameError: Name 'Setup' in nicht definiert. Soll ich das an einer bestimmten Stelle des Codes eingeben? – CptLoveNipple

    +0

    versuchen Sie dies turtle.setup (Breite = 200, Höhe = 200, Startx = keine, Starty = keine) –

    +0

    Das hat definitiv geholfen, die 'turtle.setup' Iteration funktioniert. Leider ist das Programm manchmal so randomisiert, dass es immer noch außerhalb der Grenzen der Box liegt. Danke für die Hilfe! – CptLoveNipple

    Verwandte Themen