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

Bena ·
更新时间:2024-09-21
· 675 次阅读

今天接触了一下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



唐僧 turtle Python

需要 登录 后方可回复, 如果你还没有账号请 注册新账号