You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何使用Python Turtle填充带有两个孔洞的图形?

修复Turtle带孔洞图形的填充问题

你当前代码的问题在于:外部大矩形和内部两个小矩形都是顺时针绘制的,而turtle默认的填充规则(奇偶规则)会把所有同方向的闭合区域都填上,所以无法形成镂空的孔洞效果。

解决思路很简单:让内部小矩形的绘制方向和外部大矩形相反(比如外部顺时针,内部逆时针),这样填充时内部区域会被抵消,就能得到你想要的带孔洞的图形。

修改后的完整代码:

import turtle  # 注意补充导入,原代码里漏了这行

my_tu = turtle.Turtle()
my_tu.screen.screensize(500, 500)
my_tu.color('#000000', '#bbbbbb')

# 外部大矩形:顺时针绘制
my_tu.penup()
my_tu.goto(-200, 200)
my_tu.begin_fill()
my_tu.pendown()
my_tu.goto(200, 200)
my_tu.goto(200, -200)
my_tu.goto(-200, -200)
my_tu.goto(-200, 200)

# 第一个内部小矩形:逆时针绘制(与外部方向相反)
my_tu.penup()
my_tu.goto(-170, 170)
my_tu.pendown()
my_tu.goto(-170, 130)
my_tu.goto(-130, 130)
my_tu.goto(-130, 170)
my_tu.goto(-170, 170)

# 第二个内部小矩形:逆时针绘制
my_tu.penup()
my_tu.goto(0, 170)
my_tu.pendown()
my_tu.goto(0, 130)
my_tu.goto(40, 130)
my_tu.goto(40, 170)
my_tu.goto(0, 170)

my_tu.end_fill()
turtle.done()  # 保持窗口显示

核心逻辑就是利用填充的奇偶规则:当两个闭合图形绘制方向相反时,重叠区域的填充会被抵消,从而形成镂空的孔洞效果。你也可以反过来,把外部改成逆时针、内部改成顺时针,效果完全一致。

内容的提问来源于stack exchange,提问作者waynezwf

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.05 13:45:23