2017-11-13 1 views
0

Ich versuche, eine Form mit einer Farbe zu füllen, aber wenn ich es ausführen, wird es nicht angezeigt. Soll ich keine Klassen dafür verwenden? Ich bin nicht kompetent mit Python-3 und lerne immer noch, wie Klassen mit Ihrem ProgrammFüllen einer Form mit Farbe in Python Schildkröte

import turtle 

t=turtle.Turtle() 
t.speed(0) 


class Star(turtle.Turtle): 
    def __init__(self, x=0, y=0): 
     turtle.Turtle.__init__(self) 
     self.shape("") 
     self.color("") 
#Creates the star shape  
    def shape(self, x=0, y=0): 
     self.fillcolor("red") 
     for i in range(9): 
     self.begin_fill() 
     self.left(90) 
     self.forward(90) 
     self.right(130) 
     self.forward(90) 
     self.end_fill() 
#I was hoping this would fill the inside   
    def octagon(self, x=0.0, y=0.0): 
     turtle.Turtle.__init__(self) 

    def octa(self): 
     self.fillcolor("green") 
     self.begin_fill() 
     self.left(25) 
     for x in range(9): 
      self.forward(77) 
      self.right(40) 

#doesn't run with out this 
a=Star() 

Antwort

0

Probleme verwenden: Sie erstellen und die Geschwindigkeit einer Schildkröte, die Sie eigentlich gar nicht verwenden; turtle.py hat bereits eine shape() Methode, also überschreibe sie nicht, um etwas anderes zu bedeuten, wähle einen neuen Namen; Sie wollen nicht die begin_fill() und end_fill() innerhalb der Schleife, sondern eher die Schleife umgibt; Sie rufen Ihre eigene shape() Methode mit ungültigen Argumenten auf.

Die folgende Nacharbeiten des Codes befasst sich mit den oben genannten Fragen:

from turtle import Turtle, Screen 

class Star(Turtle): 
    def __init__(self, x=0, y=0): 
     super().__init__(visible=False) 
     self.speed('fastest') 
     self.draw_star(x, y) 

    def draw_star(self, x=0, y=0): 
     """ Creates the star shape """ 

     self.penup() 
     self.setposition(x, y) 
     self.pendown() 

     self.fillcolor("red") 

     self.begin_fill() 

     for _ in range(9): 
      self.left(90) 
      self.forward(90) 
      self.right(130) 
      self.forward(90) 

     self.end_fill() 

t = Star() 

screen = Screen() 
screen.exitonclick() 

enter image description here

+0

Wenn ich versuche, das Programm, das ich den Fehler halten zu laufen bekommen: „NotImplementedError: super ist noch nicht implementiert, bitte melden Dein Anwendungsfall als GitHub-Problem. Zeile 5 ". Wie implementiere ich super() – geek2001

+0

@ geek2001, versuchen Sie, ersetzen "Turtle .__ init __ (selbst, sichtbar = False)" für die Zeile "super() .__ init __ (sichtbar = False)". Da Sie Ihre Frage Python-3.x markiert haben, habe ich die neuere Syntax verwendet. – cdlane

+0

Wie führe ich das in einem neuen Tab und fügen Sie es zu anderen Codes hinzu? – geek2001