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

如何定义Turtle绘图函数:调用时清屏或按键关闭窗口

问题需求

我希望定义一个使用turtle绘图库绘制图形的函数,要求再次调用该函数时能够清除turtle绘图窗口。请问是否有实现该功能的方法,或者能否在绘图完成后按下特定按键关闭turtle窗口?

原函数代码
import turtle
import math

def draw(b, d, w, h):
    bDraw = b*10
    dDraw = d*10
    wDraw = w*10
    hDraw = h*10
    bdAngle = abs(math.atan(dDraw/bDraw)*180/math.pi)
    draw = turtle.Turtle()
    draw.right(90)
    draw.forward(hDraw)
    draw.left(90)
    draw.forward(wDraw)
    draw.left(90)
    draw.forward(hDraw)
    draw.right(90)
    draw.forward(bDraw)
    draw.left(180-bdAngle)
    draw.forward(math.sqrt(dDraw**2 + bDraw**2))
    draw.left(bdAngle)
    draw.forward(wDraw)
    draw.left(90-(180-bdAngle-90))
    draw.forward(math.sqrt(dDraw**2 + bDraw**2))
    draw.left(180-bdAngle)
    draw.forward(bDraw+wDraw)
解决方案

1. 再次调用函数时清除绘图窗口

有两种实用方式实现该需求:

  • turtle.clear():仅清除画布上的所有图形,保留画笔当前的位置和状态
  • turtle.reset():清除画布同时将画笔重置到初始位置、角度等默认状态

建议在函数开头加入清除逻辑,同时避免每次调用都新建Turtle实例(减少资源消耗),修改后的函数示例:

import turtle
import math

# 全局创建单个画笔实例,避免重复初始化
pen = turtle.Turtle()

def draw(b, d, w, h):
    # 重置画布与画笔状态
    pen.reset()
    bDraw = b*10
    dDraw = d*10
    wDraw = w*10
    hDraw = h*10
    bdAngle = abs(math.atan(dDraw/bDraw)*180/math.pi)
    
    pen.right(90)
    pen.forward(hDraw)
    pen.left(90)
    pen.forward(wDraw)
    pen.left(90)
    pen.forward(hDraw)
    pen.right(90)
    pen.forward(bDraw)
    pen.left(180-bdAngle)
    pen.forward(math.sqrt(dDraw**2 + bDraw**2))
    pen.left(bdAngle)
    pen.forward(wDraw)
    pen.left(90-(180-bdAngle-90))
    pen.forward(math.sqrt(dDraw**2 + bDraw**2))
    pen.left(180-bdAngle)
    pen.forward(bDraw+wDraw)

2. 按下特定按键关闭窗口

可以通过turtle.onkey()绑定按键事件,配合turtle.listen()监听键盘输入,示例如下:

# 定义关闭窗口的函数
def close_window():
    turtle.bye()

# 绑定按键,例如按下q键关闭窗口
turtle.onkey(close_window, 'q')
# 开启键盘监听
turtle.listen()

# 保持窗口运行,直到手动关闭或触发按键事件
turtle.done()

你可以把按键关闭的逻辑整合到绘图流程中,比如绘图完成后在控制台提示用户按指定按键关闭窗口。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.20 15:51:32