我认为(假设)begin_fill()/ end_fill()命令只会"填充"如果形状是"关闭"形状。考虑以下: 进口龟
turtle.color("red")
turtle.begin_fill()
turtle.forward(100)
turtle.left(90)
turtle.forward(100)
turtle.end_fill()
Python完成图形并填充它 - 这不是我想要的。如何确保只填充关闭多边形?
答案 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()
警告,此解决方案 脆弱 !它取决于可能在将来的版本中发生变化的底层实现的知识。但如果你绝对要拥有它......