python中turtle的用法及实例–你的唐僧哥哥

今天接触了一下python中的turtle库,发现它的用法挺简单的,就想着自己用代码画一个其他人没有画过的,首先给大家介绍一下这个库。

turtle也叫海龟,是turtle绘图体系的python实现,它在1969年诞生,是主要用于程序设计入门,它是python语言的标准之一。

turtle库的原理:如同一只海龟,从正中心开始,在窗口上游走,走过的轨迹形成了绘制的图形,海龟由程序控制,可以变换颜色,改变宽度and so on。

绘图主要有以下几个步骤:
1.设置画板
2.设置画笔
3.控制海龟移动绘制图形
4.色彩填充

下面这些是turtle库的主要函数:

turtle.forward(distance)
turtle.fd(distance)
画笔向前移动distance距离

turtle.backward(distance)
turtle.back (distance)/ turtle.bk (distance)
画笔向后移动distance距离

turtle.right(degree)
turtle.rt(degree)
绘制方向向右旋转degree度

turtle.left(degree)
turtle.lt(degree)
绘制方向向左旋转degree度

turtle.penup() 抬起画笔,之后移动画笔不绘制图片
turtle.pendown() 落下画笔,之后移动画笔绘制图片
turtle.pensize() 设置画笔宽度
turtle.penup() 设置画笔颜色,常用的颜色

话不多说,实践出真知,唐僧哥哥的代码就分享给大家了,只不过不会配色,就没有上色:

import turtle as t
“”“
作者:SJL
时间:2020-3-24
”“”

def arm():

# 手臂
t.pu()# 抬起 画笔
t.goto(100, 10)# 控制画笔的下笔处
t.pd()# 放下画笔

t.color((0, 0, 0), "white")
t.pu()
t.seth(90)
t.fd(41)
t.seth(0)
t.fd(0)
t.pd()

t.begin_fill()
t.seth(170)
t.rt(50)
t.circle(300, -30)# 长度,弧度
t.circle(40, -70)
t.circle(40, -100)

t.seth(100)#角度
t.circle(-200, 10)

t.end_fill()

def hand():
# 手
t.pu()
t.goto(130, -125)# 控制画笔的下笔处
t.pd()# 放下画笔

t.seth(124)
t.circle(14, -180) # 长度,弧度

def head():
# 头
t.pu()
t.goto(100, 50) # 控制画笔的下笔处
t.pd() # 放下画笔

# 下面的一条线
t.seth(0)
t.lt(165)
t.circle(330, 30) # 长度,弧度

# 左边的一条线
t.rt(-90)
t.circle(190, -30) # 长度,弧度

# 上面耳朵左边的线
t.rt(-90)
t.circle(320, 20)

# 耳朵
t.seth(-50)
t.circle(10, -260)

# 耳朵右边的线
t.rt(56)
t.circle(170, 20)

t.rt(-100)
t.circle(190, -25)

t.rt(25)
t.circle(25, -70)

def eye():
# 眼
t.pu()
t.goto(122, 120) # 控制画笔的下笔处
t.pd() # 放下画笔

t.begin_fill()
t.seth(200)
#t.rt(50)
t.circle(10, -190) # 长度,弧度

t.color((0, 0, 0), "black")
t.end_fill()

# 眼睛框
t.pu()
t.goto(122, 120) # 控制画笔的下笔处
t.pd() # 放下画笔

t.rt(-155)
t.fd(70)

def diadema():
# 王冠
t.pu()
t.goto(-70, 150) # 控制画笔的下笔处
t.pd() # 放下画笔

t.rt(105)
t.fd(65)

t.rt(110)
t.fd(45)

t.rt(-105)
t.fd(60)

t.rt(110)
t.fd(60)

t.rt(-110)
t.fd(45)

t.rt(120)
t.fd(72)

t.pu()
t.goto(10, 198) # 控制画笔的下笔处
t.pd() # 放下画笔

t.rt(-150)
t.fd(25)

t.seth(-50)
t.circle(18, -260)

t.rt(140)
t.fd(24)

def body():
# 身体
t.pu()
t.goto(-73, 50) # 控制画笔的下笔处
t.pd() # 放下画笔

t.rt(33)
t.circle(580, 25) # 长度,弧度

# 转弯
t.rt(10)
t.circle(40, 110) # 长度,弧度

# 下摆
t.rt(10)
t.circle(860, 16) # 长度,弧度

# 转弯
t.rt(10)
t.circle(38, 110) # 长度,弧度

# 上升
t.rt(15)
t.circle(240, 18) # 长度,弧度

def cassock():
# 袈裟
t.pu()
t.goto(-73, 50) # 控制画笔的下笔处
t.pd() # 放下画笔

t.rt(180)
t.circle(230, 48) # 长度,弧度

# 横向纹路
# 第一道
t.pu()
t.goto(-100, 0) # 控制画笔的下笔处
t.pd() # 放下画笔

t.rt(-10)
t.circle(200, 16) # 长度,弧度

# 第二道
t.pu()
t.goto(-126, -55) # 控制画笔的下笔处
t.pd() # 放下画笔

t.rt(16)
t.circle(555, 15) # 长度,弧度

# 第三道
t.pu()
t.goto(-146, -120) # 控制画笔的下笔处
t.pd() # 放下画笔

t.rt(15)
t.circle(810, 16) # 长度,弧度

t.pu()
t.goto(132, -125) # 控制画笔的下笔处
t.pd() # 放下画笔

t.lt(2)
t.circle(38, 16) # 长度,弧度

# 第四道
t.pu()
t.goto(-160, -185) # 控制画笔的下笔处
t.pd() # 放下画笔

t.rt(32)
t.circle(1138, 16) # 长度,弧度

# 纵向纹路
#第一行
t.pu()
t.goto(-50, -5) # 控制画笔的下笔处
t.pd() # 放下画笔

t.rt(110)
t.circle(200, 16) # 长度,弧度

#第二行
t.pu()
t.goto(-95, -59) # 控制画笔的下笔处
t.pd() # 放下画笔

t.rt(20)
t.circle(240, 16) # 长度,弧度

t.pu()
t.goto(0, -63) # 控制画笔的下笔处
t.pd() # 放下画笔

t.rt(10)
t.circle(250, 16) # 长度,弧度

# 第三行
t.pu()
t.goto(-50, -135) # 控制画笔的下笔处
t.pd() # 放下画笔

t.rt(15)
t.circle(230, 16) # 长度,弧度

t.pu()
t.goto(50, -135) # 控制画笔的下笔处
t.pd() # 放下画笔

t.rt(15)
t.circle(230, 16) # 长度,弧度

# 第四行
t.pu()
t.goto(-100, -195) # 控制画笔的下笔处
t.pd() # 放下画笔

t.rt(22)
t.circle(165, 16) # 长度,弧度

t.pu()
t.goto(0, -201) # 控制画笔的下笔处
t.pd() # 放下画笔

t.rt(12)
t.circle(160, 16) # 长度,弧度

t.pu()
t.goto(100, -196) # 控制画笔的下笔处
t.pd() # 放下画笔

t.rt(3)
t.circle(165, 16) # 长度,弧度

def stick():
# 棍子
t.pu()
t.goto(-73, 50) # 控制画笔的下笔处
t.pd() # 放下画笔

t.rt(130)
t.fd(160) # 长度,弧度

t.lt(90)
t.fd(15) # 长度,弧度

t.lt(90)
t.fd(158) # 长度,弧度

def backpack():
#行囊
t.pu()
t.goto(-180, 75) # 控制画笔的下笔处
t.pd() # 放下画笔
# 结
t.rt(0)
t.circle(10,360) # 长度,弧度

# 结的下面
t.rt(-150)
t.circle(100, -60) # 长度,弧度

t.rt(20)
t.circle(40, -100) # 长度,弧度

t.lt(-30)
t.circle(105, -60) # 长度,弧度

# 结的上面
t.pu()
t.goto(-180, 95) # 控制画笔的下笔处
t.pd() # 放下画笔

# t.seth(-100)
# t.circle(50, -120)

if __name__ == "__main__":

t.pensize(4) # 笔号
t.hideturtle() # 隐藏笔头
t.colormode(255)

t.setup(1000, 800)# 设置窗口大小
t.speed(10)

arm()
hand()
head()
eye()
diadema()
body()
cassock()
stick()
backpack()

w = t.Screen()
# w.screensize(500, 400, 'grey')
w.exitonclick()# 画面停留

实例效果:

在这里插入图片描述
温馨提醒:苹果用户如果直接运行不成功的话,试试终端运行。
在这里插入图片描述

最后补充一下setup和screensize的不同:

1、关于setup有明确的定义,它包括4个参数width,height,startx,starty。

setup定义窗体的大小和相对位置,并隐含定义了画布的位置,缺省是居中占整个屏幕的一半【setup() 】,

它同时隐含定义了画布的大小为400,300【screensize()】

窗体是一个活动的苹果/windows窗口,画布是窗体中间包含的部分

2、screensize包括3个参数,定义了画布的大小和背景色

需要注意的是,screensize定义画布大小,缺省是400,300

例如,setup定义一个800*600的画布

setup(800,600,400,200)

然后用screensize()查画布大小,返回的画布大小是400,300

输入:screensize()
返回:(400, 300)

用screensize设置画布大小及背景色,screensize(400,300,'grey'),
会在相同位置创建相同大小的画布,背景色改为灰色

注意:窗体和画布不是一个概念,如果画布大于窗体,会出现滚动条,反之画布填充窗体

作者:Brogon

相关推荐

PHP后端实现苹果三方登录/signin-with-apple 授权验证

p4

用python+pyqt5手工编写一个含交互界面的简易的词法分析器

如何正确的配置python路径

在这里插入图片描述

pyinstaller打包单文件时–uac-admin选项不起作用怎么办