Python Turtle绘制心形曲线速度设置无效问题求助
Python Turtle心形绘制问题解决
问题
- 心形的左右曲线绘制耗时过长
- 在
draw_left_curve_of_heart()和draw_right_curve_of_heart()函数内设置speed()参数无效,只有全局设置speed()能改变绘图速度
原因分析
- 曲线采用
for循环逐次小角度旋转+小步长移动实现,单步操作过多,效率极低 - Turtle的
speed()在循环内重复设置不会即时生效,且全局speed()优先级更高;另外speed()参数范围为0-10,超过10的数值会被自动设为0(最快无动画),你之前写的50属于无效值
解决方案
- 用
turtle.circle()替代循环绘制曲线,原生函数的执行效率远高于手动循环操作 - 统一管理
speed()设置,在关键位置设置一次即可,避免在循环内重复设置 - 合并重复的左右曲线绘制函数,减少代码冗余
修改后的完整代码
import turtle my_turtle_cursor = turtle.Turtle() my_turtle_screen = turtle.Screen() def write_text_inside_heart(text, x_pos): my_turtle_cursor.penup() my_turtle_cursor.goto(x_pos, 15) my_turtle_cursor.pencolor("#FFFFFF") my_turtle_cursor.write(text, font=("Helvetica", 24, "bold")) def draw_heart_curve(radius, angle): # 用circle绘制心形曲线,radius控制大小,angle控制弧度 my_turtle_cursor.circle(radius, angle) def draw_complete_heart(): my_turtle_cursor.fillcolor("#FF0000") my_turtle_cursor.begin_fill() my_turtle_cursor.left(140) my_turtle_cursor.forward(294) # 绘制左曲线:负数半径实现逆时针圆弧,适配心形走向 draw_heart_curve(-150, 200) my_turtle_cursor.right(190) # 绘制右曲线 draw_heart_curve(-150, 200) my_turtle_cursor.forward(294) my_turtle_cursor.end_fill() # 初始设置 my_turtle_cursor.penup() my_turtle_cursor.goto(0, -200) my_turtle_cursor.pendown() my_turtle_cursor.speed(5) # 0为最快无动画,1-10速度递增 draw_complete_heart() # 批量写入文字,简化重复操作 write_text_inside_heart("Willst", -240) write_text_inside_heart("du", -140) write_text_inside_heart("meine", -90) write_text_inside_heart("Freundin", 10) write_text_inside_heart("sein?", 160) turtle.done()
额外说明
- 如果追求最快绘制速度,可将
my_turtle_cursor.speed(5)改为my_turtle_cursor.speed(0),此时会跳过动画直接渲染完成图形 circle()的第一个参数设为负数时,会沿逆时针方向绘制圆弧,刚好适配心形的曲线走向
内容的提问来源于stack exchange,提问作者Saxda
相关产品推荐
相关产品推荐

