学习Python中turtle模块的基本用法(2:基本绘图函数测试)

  个人感觉turtle模块中的绘图函数是按人手拿着画笔一笔一画地画图的思路定义的,这与C#中的GDI+函数、html5中canvas的绘图函数及Tkinter中Canvas的绘图函数的定义思路存在差异,但也能完成后面绝大部分的绘图功能(目前看到的turtle文章及帮助文档里面还没有看到类似drawimage的函数)。
  本文介绍turtle模块中最常用的绘图函数,并结合参考文献测试绘图函数的使用方式。

序号函数名说明
1turtle.bgcolor设置窗体背景色
2turtle.screensize设置窗体大小
3turtle.penup提笔,笔抬起来之后后续就不会再绘图,turtle.pu、turtle.up与本函数作用相同
4turtle.pendown落笔,笔落后后续就开始绘图,turtle.pd、turtle.down与本函数作用相同
5turtle.pensize设置线宽,turtle.width与本函数作用相同
6turtle.pencolor设置线条颜色
7turtle.fillcolor设置区域填充颜色
8turtle.begin_fill在绘制要填充的形状之前调用
9turtle.end_fill以填充颜色填充前一begin_fill之后绘制的形状。自相交多边形或多个形状间的重叠区域是否填充取决于操作系统的图形引擎、重叠的类型以及重叠的层数
10turtle.write绘制文本,可以指定对齐方式及字体信息,详见参考文献1
11turtle.hideturtle隐藏绘图箭头或海龟(本人电脑上显示的是箭头),turtle.ht与本函数作用相同
12turtle.showturtle显示绘图箭头或海龟 ,turtle.st与本函数作用相同
13turtle.forward向前移动指定距离,penup时是移动,pendown时则是绘图,turtle.fd与本函数作用相同
14turtle.backward向后移动指定距离,penup时是移动,pendown时则是绘图,turtle.back、turtle.bk与本函数作用相同
15turtle.right向右侧转指定角度,之前调用过degrees函数则输入参数为度数,之前调用过radians则输入参数为弧度,turtle.rt与本函数作用相同
16turtle.left向左侧转指定角度,之前调用过degrees函数则输入参数为度数,之前调用过radians则输入参数为弧度,turtle.lt与本函数作用相同
17turtle.goto移动到指定坐标处,penup时是移动,pendown时则是绘图,turtle.setpos、turtle.setposition与本函数作用相同
18turtle.speed设置海龟移动的速度为 0…10 表示的整型数值,速度值从 1 到 10,画线和海龟转向的动画效果逐级加快。
19turtle.position获取海龟当前坐标,turtle.pos与本函数作用相同
20turtle.circle绘制圆形,圆心在海龟左边 radius 个单位

  基于上述函数,结合参考文献进行绘图功能测试。首先测试绘制五星红旗,原始代码来自参考文献2,其绘制了红旗和旗杆,本文测试时去掉了绘制旗杆的代码,并对绘制红旗的代码进行了优化,优化后的代码及运行效果如下所示:

import turtle

def DawStar(startX,startY,lens):
    turtle.penup()
    turtle.goto(startX,startY)
    turtle.pendown()
    turtle.fillcolor("yellow")
    turtle.pencolor("yellow")
    turtle.begin_fill()   
          
    for i in range(1,6):
        turtle.forward(lens) 
        turtle.right(144)      
          
    turtle.end_fill()

turtle.pencolor("red")
turtle.fillcolor("red") 
turtle.begin_fill()         
turtle.penup()
turtle.goto(-60,0)
turtle.pendown()
turtle.goto(-60,160)
turtle.goto(240,160)
turtle.goto(240,0)
turtle.goto(-60,0)
turtle.end_fill()

DawStar(-50,110,45)
DawStar(-10,145,20)
DawStar(10,120,20)
DawStar(10,95,20)
DawStar(-10,70,20)
turtle.hideturtle()

在这里插入图片描述
  第二个测试程序绘制的是从参考文献3中找到的简单的盘类零件主视图(原始图如下图所示),主要是由多个圆组成,绘图代码及运行效果如下所示(暂时不清楚虚线怎么画,绘图时全都画成了实线):
在这里插入图片描述

import turtle

def DrawCircle(startX,startY,width,radius):
    turtle.penup()
    turtle.goto(startX,startY)
    turtle.pensize(width)
    turtle.pendown()
    turtle.right(90)
    turtle.circle(radius)
    turtle.left(90)

turtle.pensize(1)
turtle.penup()
turtle.backward(130)
turtle.pendown()
turtle.forward(260)
turtle.penup()
turtle.goto(0,130)
turtle.pendown()
turtle.goto(0,-130)
turtle.penup()
turtle.goto(0,0)

DrawCircle(-50,0,3,50)
DrawCircle(-60,0,3,60)
DrawCircle(-70,0,3,70)
DrawCircle(-90,0,1,90)
DrawCircle(-110,0,3,110)

DrawCircle(-100,0,3,10)
DrawCircle(-10,-90,3,10)
DrawCircle(80,0,3,10)
DrawCircle(-10,90,3,10)

turtle.hideturtle()

在这里插入图片描述

参考文献:
[1]https://docs.python.org/zh-cn/3/library/turtle.html
[2]https://blog.csdn.net/A15622180434/article/details/122700075
[3]https://max.book118.com/html/2016/0803/50160473.shtm

  • 0
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值