Python 用turtle实现用正方形画圆的例子
作者:春江暮客 发布时间:2022-08-05 13:56:33
最近发现一个很有意思的画图的python库,叫做turtle,这里先说下用turtle这个库来实现用正方形画圆的思路。
每次都用乌龟(turtle)来画出一个正方形,然后通过旋转3°后,继续画一样的正方形,在通过120次循环后就实现了完整的圆,这里当然也可以用其他的角度和次数,只要能完成360度就可以了。
先看完成的图形和代码。
代码如下:
import turtle
window = turtle.Screen() #设置好画图的基本参数
window.bgcolor(“blue”)
wugui= turtle.Turtle()
wugui.shape(“turtle”)
wugui.color(“red”)
wugui.speed(5)
for i in range(120): #这里设定正方形的个数
wugui.forward(100)
wuguiright(90)
wugui.forward(100)
wugui.right(90)
wugui.forward(100)
wugui.right(90)
wugui.forward(100)
wugui.right(93)#这里决定每次旋转角度,也就决定了需要画正方形的次数。
window.exitonclick()
代码应该很简单易懂,就不再说了。turtle真的是非常强大的一个绘图工具,可以绘制各种各样有趣的图形,详情请看 turtle官方文档,这里说点基本的参数与用法吧。主要包括两部分,乌龟与画布。
乌龟方法
乌龟运动
乌龟移动与绘画
forward() | fd() 向前移动指定的距离。参数:(integer or float))一个数字
backward() | bk() | back() 向后移动指定的距离。参数:(integer or float))一个数字
right() | rt() left() | lt() 向右 旋转指定的角度。参数:(integer or float))一个数字
goto() | setpos() | setposition() 去到位置(x,y)。参数:(x, y=None))一个数字
setx() 设置X位置。参数:(integer or float)一个数字
sety() 设置Y位置。参数:(integer or float)一个数字
setheading() | seth() 方向设置为to_angle.就是东西南北方向,上北下南左西右东
home() 移动到原点 – 坐标(0,0):并将其标题设置为其起始方向
circle() 绘制一个给定半径的圆。参数:(radius,extent,steps)(一个数字__半径,如果值为正则逆时针,负数为顺时针__,一个数字, 执行的步数)
dot() 用颜色画出一个直径大小的圆点。参数:(size,color)(一个大于1的整数_可None,颜色值)
stamp() 将当前位置上的形状复制到画布上,返回stamp_id.可通过下方的clearstamp删除
clearstamp() 删除stamp()返回来的值,参数:(stamp_id)stamp函数返回值
clearstamps() 删除所有的stamp,默认无参数,删除所有
undo() 撤销上一步动作
speed() 乌龟爬行速度,我们这设置的是5,不设置为最快,直接生成
乌龟当前状态
position() | pos() 当前位置
towards() 返回与指定点之间的角度 参数:(X,Y)一个位置
xcor() 返回乌龟X坐标
ycor() 返回乌龟Y坐标
heading() 返回当前乌龟的方向值
distance() 返回乌龟与坐标点之间的距离。参数:(X,Y)一个位置
设置与测量
degrees() 设置整个圆的角度,最好不要动。参数:(integer or float)一个整数
radians() 将角度测量单位设置为弧度。360度就是2π
画笔控制
绘画状态
pendown() | pd() | down() 将笔落下放在图上,移动的时候将会绘图
penup() | pu() | up() 将笔提起来,移动的时候将不会绘图
pensize() | width() 设置线条的粗细。参数:(width)一个正数
pen() 使用键值对设置笔的属性
“shown”: True/False 显示
“pendown”: True/False 笔落下
“pencolor”: color-string or color-tuple 笔的颜色
“fillcolor”: color-string or color-tuple 填充颜色
“pensize”: positive number 笔大小(正整数)
“speed”: number in range 0..10 绘画速度(范围0-10)
“resizemode”: “auto” or “user” or “noresize” 大小调整模式
“stretchfactor”: (positive number, positive number) 拉伸参数
“outline”: positive number 外部
“tilt”: number 倾斜
isdown() 如果笔停止返回True,反之返回False
颜色控制
color() 颜色,直接使用返回当前笔颜色与填充颜色
pencolor() 设置笔的颜色
fillcolor() 设置笔的填充颜色
填充
filling() 返回填充状态,
begin_fill() 在填充之前使用
end_fill() 结束填充
更多绘画控制
reset() 重置所有参数
clear() 删除绘画,与reset不同之处仅仅是删除图形,参数保留
write() 写文字
arg – object to be written to the TurtleScreen 写到TurtleScreen的参数
move – True/False 移动
align – one of the strings “left”, “center” or right” 对齐参数3选1(left,right,center)
font – a triple (fontname, fontsize, fonttype) 字体
乌龟状态
可视性
showturtle() | st() 显示乌龟的形状
hideturtle() | ht() 隐藏乌龟的形状
isvisible() 是否可见,返回True or False
外表
shape() 设置乌龟的图形形状,可选( “arrow”, “turtle”, “circle”, “square”, “triangle”, “classic”)
resizemode() 大小调整模式
“auto”: adapts the appearance of the turtle corresponding to the value of pensize. 由画笔大小决定(自动)
“user”: adapts the appearance of the turtle according to the values of stretchfactor and outlinewidth (outline), 由拉伸参数决定
“noresize”: no adaption of the turtle's appearance takes place. 不调整
shapesize() | turtlesize() 返回笔的属性。
shearfactor() 设置或者返回当前剪切因子
settiltangle() 与tilt() 一样,只是可以为空,则返回当前旋转角度
tiltangle() 弃用
tilt() 设置当前乌龟角度,不调整乌龟前进方向(仅仅改变乌龟样子)
shapetransform() 设置或返回乌龟的形状的当前转换矩阵
get_shapepoly() 返回当前形状的坐标
监听动作
onclick() 鼠标点击事件
fun – a function with two arguments which will be called with the coordinates of the clicked point on the canvas函数需要有两个参数
num – number of the mouse-button, defaults to 1 (left mouse button) 单击次数,默认1
add – True or False – if True, a new binding will be added, otherwise it will replace a former binding 添加新的绑定函数,否则替代之前函数
例子:def turn(x, y):
。。。 left(180)
onclick(turn)
onrelease() 鼠标释放事件,同上
ondrag() 鼠标移动事件,同上
乌龟一些特殊方法
begin_poly() 开始记录多边形的顶点,当前点为起始点
end_poly() 结束记录多边形的顶点,当前点为起始点
get_poly() 返回最后记录的多边形
clone() 复制一个一模一样的乌龟
getturtle() | getpen() 获取trutle对象本身
getscreen() 获取画布对象
setundobuffer() 设置或禁用中断器
undobufferentries() 返回undobuffer中的条目数
画布的方法
窗口控制
bgcolor() 设置或返回当前画布的背景颜色
bgpic() 设置或返回当前画布的背景图片名称
clear() | clearscreen() 清除图形
reset() | resetscreen() 重置画布
screensize() 画布大小
canvwidth – positive integer, new width of canvas in pixels 宽度
canvheight – positive integer, new height of canvas in pixels 高度
bg – colorstring or color-tuple, new background color 颜色
setworldcoordinates() 全局坐标
llx – a number, x-coordinate of lower left corner of canvas 左下X坐标
lly – a number, y-coordinate of lower left corner of canvas 左下X坐标
urx – a number, x-coordinate of upper right corner of canvas 右下X坐标
ury – a number, y-coordinate of upper right corner of canvas 右下X坐标
动画控制
delay() 动画延迟(毫秒)参数:(integer )一个数字
tracer() 开启动画,设置延迟
n – nonnegative integer n个动作执行一次
delay – nonnegative integer 延迟,毫秒
update() 更新画布,当tracer关闭时使用
画布监听
listen() 开启监听,将鼠标定位到画布
onkey() | onkeyrelease() 键盘弹起(需要位于焦点上,使用上面listen后)
fun – a function with no arguments or None 动作函数
key – a string: key (e.g. “a”) or key-symbol (e.g. “space”) 按键
onkeypress() 键盘按下事件,同上
onclick() | onscreenclick() 鼠标点击事件
fun – a function with two arguments which will be called with the coordinates of the clicked point on the canvas 函数需要两个参数
num – number of the mouse-button, defaults to 1 (left mouse button) 点击次数
add – True or False – if True, a new binding will be added, otherwise it will replace a former binding 是否是添加,还是替换
ontimer() 计时器
fun – a function with no arguments 无需函数
t – a number >= 0 事件间隔
mainloop() | done() 开始事件循环,必须是乌龟绘画中的最后一个函数
设置与特殊方法
mode() 绘图模式,3选1 “standard”, “logo” or “world”
colormode() 颜色模式, 1.0 或者 255
getcanvas() 返回当前TurtleScreen.的Canvas
getshapes() 返回当前可用形状
register_shape() | addshape() 3种调用方式。
1.直接调用图片。screen.register_shape(“turtle.gif”)
2.调用形状,制定点位置。
screen.register_shape("triangle", ((5,-3), (0,5), (-5,-3)))
3,调用形状,名字随便取
turtles() 返回乌龟list数组
window_height() 返回窗口高度
window_width() 返回窗口宽度
输入方法
textinput() 文字输入
title – string 输入名字
prompt – string 输入的文本
numinput() 数字输入
title – string 输入名字
prompt – string 输入文本
default – number (optional) 默认
minval – number (optional) 最小
maxval – number (optional) 最大
屏幕特有方法
bye() 关闭turtle窗口
exitonclick() 鼠标点击关闭窗口
setup() 设置主窗口参数
width – if an integer, a size in pixels, if a float, a fraction of the screen; default is 50% of screen 宽 度
height – if an integer, the height in pixels, if a float, a fraction of the screen; default is 75% of screen 高度
startx – if positive, starting position in pixels from the left edge of the screen, if negative from the right edge, if None, center window horizontally 左边开始位置
startx – if positive, starting position in pixels from the top edge of the screen, if negative from the bottom edge, if None, center window vertically 右边开始位置
title() 设置绘画窗口标题
来源:https://blog.csdn.net/ztb8541/article/details/84244326


猜你喜欢
- 在Python语言中,Uincode字符串处理一直是一个容易让人迷惑的问题。许多Python爱好者经常因为搞不清Unicode、UTF-8还
- 在进行接口自动化测试时,有好多接口都基于登陆接口的响应值来关联进行操作的,在次之前试了很多方法,都没有成功,其实很简单用session来做。
- 一、MySQL进阶查询首先先创建两张表mysql -u root -pXXX #登陆数据库,XXX为密码crea
- Python是一门高级编程语言,其拥有多种循环方式,如for循环、while循环、do-while循环等。在编写程序时,需要根据不同的场景和
- strip:用于移除字符串头尾指定的字符(默认为空格)或字符序列。注意:该方法只能删除开头或是结尾的字符,不能删除中间部分的字符。语法:st
- 五花八门的SQL产品多得要命,或许你早顾不得其它甩开袖子就动手干了。但你要同时采用ASP和SQL的话就可能会头晕。MySQL、SQL Ser
- -- 1. 查看被锁的表SELECT p.spid, a.serial#, c.object_name, b.session_id, b.o
- vue+element表格实现多层数据嵌套今天用element的表格渲染了商城的购物车列表,element的表格之前也用到过,它把所有的东西
- 我的长博文不少,比较影响阅读体验,有必要添加一个文章目录功能。相比 Wordpress, Typecho 的插件就比较少了。我想找一个像掘金
- 正则口径:知道前后取中间,如果最后$结束python中则这表达式的方法通常由re.match re.search re.finda
- 常用的转换函数是 cast 和 convert,用于把表达式得出的值的类型转换成另一个数据类型,如果转换失败,该函数抛出错误,导致整个事务回
- 如下所示:import numpy as npimport pandas as pdfrom pandas import Series,Da
- 关于php,最近学了好多,老师跟我们说,现在学的都是php的核心部分,所以我比较注意了一下,也多练习了几遍,相对来说理解起来嗨算轻松,没有刚
- 本文实例讲述了C#简单访问SQLite数据库的方法。分享给大家供大家参考,具体如下:下载最新版SQLite(http://www.sqlit
- 操作步骤导入框架,import unitest测试类必须继承类:.class 类名(unittest.TestCase):在类中所有定义te
- 1.基本结构 create OR REPLACE PROCEDURE存储过程名字 ( 参数1 IN NUMBER, 参数2 IN NUMBE
- ImageEnhance模块提供了一些用于图像增强的类。一、ImageEnhance模块的接口所有的增强类都实现了一个通用的接口,包括一个方
- 首先 下载 jedis.jar包然后再 工程设置里面找到Libraries,点击+。添加下载好的jedis.jar包。点击OK退出即可创建J
- 实际线上的场景比较复杂,当时涉及了truncate, delete 两个操作,经确认丢数据差不多7万多行,等停下来时,差不多又有共计1万多行
- Python time模块时间获取和转换Time模块介绍Python的Time库可以进行时间相关的处理,如访问当前日期和时间,输出不同格式的