填充非闭合多边形的Python Turtle图形

时间:2016-10-22 02:08:33

标签: python fill turtle-graphics

我认为(假设)begin_fill()/ end_fill()命令只会"填充"如果形状是"关闭"形状。考虑以下:     进口龟

turtle.color("red")
turtle.begin_fill()
turtle.forward(100)
turtle.left(90)
turtle.forward(100)
turtle.end_fill()

Python完成图形并填充它 - 这不是我想要的。如何确保只填充关闭多边形?

1 个答案:

答案 0 :(得分:0)

我想我们可以继承Turtle并改变规则:

from turtle import Turtle, Screen

class Yertle(Turtle):
    def end_fill(self):
        if len(self._fillpath) > 3 and self._fillpath[0] == self._fillpath[-1]:
            super().end_fill()  # warning, Python3 syntax!
        else:
            self.end_poly()

现在我们可以做到:

turtle = Yertle()
screen = Screen()

turtle.color("red")

turtle.begin_fill()
turtle.forward(100)
turtle.left(90)
turtle.forward(100)
turtle.end_fill()

turtle.penup()
turtle.home()
turtle.pendown()

turtle.color("green")

turtle.begin_fill()
turtle.backward(100)
turtle.right(90)
turtle.backward(100)
turtle.home()
turtle.end_fill()

screen.exitonclick()

enter image description here

警告,此解决方案 脆弱 !它取决于可能在将来的版本中发生变化的底层实现的知识。但如果你绝对要拥有它......