Python--turtle库

                                               Python--turtle库

这里在对python的turtle由一定的了解的前提下,对turtle库的函数做一个具体的解释,并给出几个例子,可以更好的理解海龟绘图体系。

命令 说明
  画笔运动命令

turtle.forward(distance)

向当前画笔方向移动distance像素长度

turtle.backward(distance)

向当前画笔相反方向移动distance像素长度
turtle.right(degree) 顺时针移动degree°
turtle.left(degree) 逆时针移动degree°
turtle.pendown() 移动时绘制图形,缺省时也为绘制

dot(r)

绘制一个指定直径和颜色的圆点

home()

设置当前画笔位置为原点,朝向东。

setheading(angle)

设置当前朝向为angle角度

sety( )

将当前y轴移动到指定位置

setx( )

将当前x轴移动到指定位置

turtle.circle()

画圆,半径为正(负),表示圆心在画笔的左边(右边)画圆

turtle.penup()

提起笔移动,不绘制图形,用于另起一个地方绘制

turtle.goto(x,y)

将画笔移动到坐标为x,y的位置

  画笔控制命令

turtle.fillcolor(colorstring)

绘制图形的填充颜色

turtle.color(color1, color2)

同时设置pencolor=color1, fillcolor=color2

turtle.showturtle()

显示画笔的turtle形状

turtle.hideturtle()

隐藏画笔的turtle形状

turtle.filling()

返回当前是否在填充状态

turtle.begin_fill()

准备开始填充图形

turtle.end_fill()

填充完成

  全局控制命令

turtle.write(s [,font=("font-name",font_size,"font_type")])

写文本,s为文本内容,font是字体的参数,分别为字体名称,大小和类型;font为可选项,font参数也是可选项

turtle.clear()

清空turtle窗口,但是turtle的位置和状态不会改变

turtle.reset()

清空窗口,重置turtle状态为起始状态

turtle.undo()

撤销上一个turtle动作

turtle.isvisible()

返回当前turtle是否可见

stamp()

复制当前图形

  其他

turtle.delay(delay=None)

设置或返回以毫秒为单位的绘图延迟。

turtle.begin_poly()

开始记录多边形的顶点。当前的乌龟位置是多边形的第一个顶点。

turtle.end_poly()

停止记录多边形的顶点。当前的乌龟位置是多边形的最后一个顶点。将与第一个顶点相连。

turtle.get_poly()

返回最后记录的多边形。

实例(1):蟒蛇的绘制

import turtle

# or from <库名> import <函数名> or from <库名> import*
# import <库名> as <库别名>    <库别名>. <函数>
turtle.setup(650, 350, 200, 200)  # 绘图窗口width, height, startx, starty 单位: 像素
turtle.penup()  # (1)画笔控制函数,不在画布上形成图案
turtle.fd(-250)  # 前; bk后
turtle.pendown()  # (2)
turtle.pensize(25)  # 画笔宽度,海龟得腰围 or turtle.width
# turtle.colormode(mode) mode = 1.0RGB小数模式; mode = 255RGB整数模式
turtle.pencolor("tomato")  # 字符串,RGB小数值,元组值=(小数值/整数值)
turtle.seth(-40)  # 改变行进方向,绝对角度;left(angle) or right(angle),海龟角度
for i in range(4):  # range(n) 产生循环计数序列,由0到n-1;range(m, n)
    turtle.circle(40, 80)  # 旋转(r,extent)根据半径r(圆心在海龟左侧)绘制extent角度得弧度
    turtle.circle(-40, 80)
turtle.circle(40, 80 / 2)
turtle.fd(40)
turtle.circle(16, 180)
turtle.fd(40 * 2 / 3)
turtle.done()  # 停滞窗口

实例(2):数码管日期的绘制(取决于运行时的日期)

import turtle as t
import time
def drawgap(): #绘制数码管间隙
    t.penup()
    t.fd(5)
def drawline(draw): #绘制单段数码管
    drawgap()
    t.pendown() if draw else t.penup()
    t.fd(40)
    drawgap()
    t.right(90)
def drawdigit(digit): #绘制七段数码管
    drawline(True) if digit in [2, 3, 4, 5, 6, 8, 9] else drawline(False)
    drawline(True) if digit in [0, 1, 3, 4, 5, 6, 7, 8, 9] else drawline(False)
    drawline(True) if digit in [0, 2, 3, 5, 6, 8, 9] else drawline(False)
    drawline(True) if digit in [0, 2, 6, 8] else drawline(False)
    t.left(90)
    drawline(True) if digit in [0, 4, 5, 6, 8, 9] else drawline(False)
    drawline(True) if digit in [0, 2, 3, 5, 6, 7, 8, 9] else drawline(False)
    drawline(True) if digit in [0, 1, 2, 3, 4, 7, 8, 9] else drawline(False)
    t.left(180)
    t.penup()
    t.fd(20)
def drawDate(date):
    number = 0
    for i in date:
        if number <= 3:
            t.pencolor('red')
        elif number <= 5:
            t.pencolor('green')
        else:
            t.pencolor('blue')
        drawdigit(eval(i))
        if number == 3 or number == 5:
            t.pencolor('purple')
            t.penup()
            t.fd(10)
            t.pendown()
            t.circle(2)
            t.penup()
            t.fd(30)
            t.pendown()
        number += 1
def main():
    t.setup(800, 350, 200, 200)
    t.penup()
    t.fd(-300)
    t.pensize(5)
    drawDate(time.strftime("%Y%m%d", time.gmtime()))
    t.hideturtle()
    t.done()
main()

猜你喜欢

转载自blog.csdn.net/jly164260234/article/details/83216204