【问题标题】:Python turtle graphics filling issuePython海龟图形填充问题
【发布时间】:2018-11-14 22:40:35
【问题描述】:

我应该为我的 Python 类绘制一个建筑物,fillcolor() 函数为其中两个形状完成了它的工作,但对于最后一个形状,即使可以说我完成了电路,它也不会' t 用我需要的颜色填充它:

import turtle

def main():
    turtle.setup(900, 900)
    cityscape(-300, -400, 300, 'gray')
    cityscape(0, -400, 300, 'gray')
    building(-300, -100, 'gray')
    turtle.speed(0)

def cityscape(x, y, width, color):
    turtle.penup()
    turtle.goto(x, y)
    turtle.pencolor('gray')
    turtle.fillcolor(color)
    turtle.pendown()
    turtle.begin_fill()
    for count in range(4):
        turtle.forward(width)
        turtle.left(90)
    turtle.end_fill()

def building(x, y, color):
    turtle.penup()
    turtle.goto(x, y)
    turtle.fillcolor(color)
    turtle.pendown()
    turtle.begin_fill()
    turtle.forward(100)
    turtle.left(90)
    turtle.forward(100)
    turtle.right(180)
    turtle.left(90)
    turtle.forward(100)
    turtle.left(90)
    turtle.forward(200)
    turtle.right(90)
    turtle.forward(100)
    turtle.right(90)
    turtle.forward(250)
    turtle.left(90)
    turtle.forward(70)
    turtle.left(90)
    turtle.forward(175)
    turtle.right(90)
    turtle.forward(80)
    turtle.right(90)
    turtle.forward(100)
    turtle.left(90)
    turtle.forward(70)
    turtle.right(90)
    turtle.forward(425)
    turtle.right(90)
    turtle.forward(425)


main()

我该如何解决这个问题?

【问题讨论】:

    标签: python turtle-graphics


    【解决方案1】:

    您在 building() 函数的末尾留下了 turtle.end_fill()。我也会写main()如下:

    def main():
        turtle.setup(900, 900)
        turtle.speed('fastest')
        cityscape(-300, -400, 300, 'gray')
        cityscape(0, -400, 300, 'gray')
        building(-300, -100, 'gray')
        turtle.mainloop()
    

    包含上述修复和一些样式更改的完整代码清单:

    from turtle import Screen, Turtle
    
    def main():
        screen = Screen()
        screen.setup(900, 900)
    
        yertle = Turtle(visible=False)
        yertle.speed('fastest')
    
        cityscape(yertle, -300, -400, 300, 'gray')
        cityscape(yertle, 0, -400, 300, 'gray')
        building(yertle, -300, -100, 'gray')
    
        screen.mainloop()
    
    def cityscape(turtle, x, y, width, color):
        turtle.penup()
        turtle.goto(x, y)
        turtle.pendown()
    
        turtle.color(color)
    
        turtle.begin_fill()
        for _ in range(4):
            turtle.forward(width)
            turtle.left(90)
        turtle.end_fill()
    
    def building(turtle, x, y, color):
        turtle.penup()
        turtle.goto(x, y)
        turtle.pendown()
    
        turtle.color(color)
    
        turtle.begin_fill()
        turtle.forward(100)
        turtle.left(90)
        turtle.forward(100)
        turtle.right(90)
        turtle.forward(100)
        turtle.left(90)
        turtle.forward(200)
        turtle.right(90)
        turtle.forward(100)
        turtle.right(90)
        turtle.forward(250)
        turtle.left(90)
        turtle.forward(70)
        turtle.left(90)
        turtle.forward(175)
        turtle.right(90)
        turtle.forward(80)
        turtle.right(90)
        turtle.forward(100)
        turtle.left(90)
        turtle.forward(70)
        turtle.right(90)
        turtle.forward(425)
        turtle.right(90)
        turtle.forward(425)
        turtle.end_fill()
    
    main()
    

    【讨论】:

    • 所以你是说我需要将末端填充放在 def 建筑物而不是城市景观下
    • @DonniBenotti,不,我是说每个begin_fill() 都需要一个end_fill()。我正在为我的答案添加一个完整的代码清单。
    • 我第一次完全看错了,我有点压力,但它成功了。谢谢你的帮助。最后结果很好。
    猜你喜欢
    • 1970-01-01
    • 2014-03-18
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-03-19
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多