python中用turtle画一个圆形(pythonturtle教程)

最近发现一个很有意思的画图的python库,叫做turtle,这里先说下用turtle这个库来实现用正方形画圆的思路。每次都用乌龟(turtle)来画出一个正方形,然后通过旋转3°后,继续画一样的正方形,在通过120次循环后就实现了完整的圆,这里当然也可以用其他的角度和次数,只要能完成360度就可以了。先看完成的图形和代码。代码如下:importturtlewindow=turtle.Scr…

大家好,又见面了,我是你们的朋友全栈君。

最近发现一个很有意思的画图的python库,叫做turtle,这里先说下用turtle这个库来实现用正方形画圆的思路。

每次都用乌龟(turtle)

d89746888da2d9510b64a9f031eaecd5.gif

来画出一个正方形,然后通过旋转3°后,继续画一样的正方形,在通过120次循环后就实现了完整的圆,这里当然也可以用其他的角度和次数,只要能完成360度就可以了。

先看完成的图形和代码。

d89746888da2d9510b64a9f031eaecd5.gif

代码如下:

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,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,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,center window vertically 右边开始位置

title() 设置绘画窗口标题

以上这篇Python 用turtle实现用正方形画圆的例子就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持我们。

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/129678.html原文链接:https://javaforall.net

(0)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • elk怎么搭建_搭建网站的过程

    elk怎么搭建_搭建网站的过程1.服务器使用阿里云服务器(方便),抢占式实例(便宜),4核16G,系统选择centos7.4/64位(好用)。购买地址:https://ecs-buy.aliyun.com/我们只是测试学习使用,把端口权限全开就行(不然外网访问不了),安全组配置那里添加如下:2.下载ELK的包:下载地址:https://www.elastic.co/downloads下载最新版的、l…

    2022年4月19日
    33
  • idea2022年最新激活码(JetBrains全家桶)

    (idea2022年最新激活码)2021最新分享一个能用的的激活码出来,希望能帮到需要激活的朋友。目前这个是能用的,但是用的人多了之后也会失效,会不定时更新的,大家持续关注此网站~IntelliJ2021最新激活注册码,破解教程可免费永久激活,亲测有效,下面是详细链接哦~https://javaforall.net/100143.html…

    2022年3月30日
    209
  • XXE攻击与防御

    XXE攻击与防御XXEXXE是一种很常见的漏洞类型危害也挺大的,如果一个web服务器通过用户上传处理XML文件或POST请求时,那么可能就会存在漏洞。前段时间比较出名的微信支付的xxe漏洞漏洞简历XXE就是XML外部实体注入,当服务器允许引用外部实体时,同过构建恶意内容来攻击网站产生原因解析xml文件时允许加载外部实体,并且实体的URL支持file://和PHP://等协议,没有过滤用户提交的参数危害读取任意文件执行系统命令探测内网端口攻击内网网站DOS攻击…漏洞检测利用burp检测那些接

    2022年5月10日
    41
  • 软测试是一个烂摊子?NO——【软测试】

    软测试是一个烂摊子?NO——【软测试】

    2022年1月4日
    34
  • awk从放弃到入门(1):awk基础 (通俗易懂,快进来看)「建议收藏」

    awk从放弃到入门(1):awk基础 (通俗易懂,快进来看)「建议收藏」我们先来用专业的术语描述一下awk是什么,如果你看不懂,没关系,我们会再用"大白话"解释一遍。 awk是一个报告生成器,它拥有强大的文本格式化的能力,这就是专业的说法。你可能不理解所谓的报告生成器中的"报告"是什么,你可以把"报告"理解为"报表"或者"表格",也就是说,我们可以利用awk命令,将一些文本整理成我们想要的样子,比如把一些文本整理成"表"的样子,然后再展示出来,刚才概念中提到的

    2022年7月11日
    27
  • ORB-SLAM 2+3 rgbd稠密地图 (地图可回环)「建议收藏」

    ORB-SLAM 2+3 rgbd稠密地图 (地图可回环)「建议收藏」高博曾经在他的github上提供过,但因为大佬时间少,并没有将回环加入到稠密地图,现提供一个可回环的稠密地图版本https://github.com/tiantiandabaojian/ORB-SLAM2_RGBD_DENSE_MAP.git第一张图片是TUM数据集未回环的地图第二张图片是经过回环的地图第三张是博主自己用KinectV2跑出的地图望能帮到各位…

    2022年9月18日
    2

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号