侯体宗的博客
  • 首页
  • 人生(杂谈)
  • 技术
  • 关于我
  • 更多分类
    • 文件下载
    • 文字修仙
    • 中国象棋ai
    • 群聊
    • 九宫格抽奖
    • 拼图
    • 消消乐
    • 相册

Python 用turtle实现用正方形画圆的例子

Python  /  管理员 发布于 7年前   272

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

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

先看完成的图形和代码。

代码如下:

import turtlewindow = 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() 移动到原点 C 坐标(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 C object to be written to the TurtleScreen 写到TurtleScreen的参数move C True/False  移动align C one of the strings “left”, “center” or right” 对齐参数3选1(left,right,center)font C 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 C a function with two arguments which will be called with the coordinates of the clicked point on the canvas函数需要有两个参数num C number of the mouse-button, defaults to 1 (left mouse button) 单击次数,默认1add C True or False C 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 C positive integer, new width of canvas in pixels 宽度canvheight C positive integer, new height of canvas in pixels 高度bg C colorstring or color-tuple, new background color     颜色

setworldcoordinates() 全局坐标

llx C a number, x-coordinate of lower left corner of canvas   左下X坐标lly C a number, y-coordinate of lower left corner of canvas   左下X坐标urx C a number, x-coordinate of upper right corner of canvas  右下X坐标ury C a number, y-coordinate of upper right corner of canvas  右下X坐标

动画控制

delay() 动画延迟(毫秒)参数:(integer )一个数字
tracer() 开启动画,设置延迟

n C nonnegative integer    n个动作执行一次delay C nonnegative integer  延迟,毫秒

update() 更新画布,当tracer关闭时使用

画布监听

listen() 开启监听,将鼠标定位到画布
onkey() | onkeyrelease() 键盘弹起(需要位于焦点上,使用上面listen后)

fun C a function with no arguments or None 动作函数
key C a string: key (e.g. “a”) or key-symbol (e.g. “space”) 按键
onkeypress() 键盘按下事件,同上

onclick() | onscreenclick() 鼠标点击事件

fun C a function with two arguments which will be called with the coordinates of the clicked point on the canvas 函数需要两个参数
num C number of the mouse-button, defaults to 1 (left mouse button) 点击次数
add C True or False C if True, a new binding will be added, otherwise it will replace a former binding 是否是添加,还是替换
ontimer() 计时器

fun C a function with no arguments 无需函数
t C 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 C string 输入名字
prompt C string 输入的文本
numinput() 数字输入

title C string 输入名字
prompt C string 输入文本
default C number (optional) 默认
minval C number (optional) 最小
maxval C number (optional) 最大

屏幕特有方法

bye() 关闭turtle窗口
exitonclick() 鼠标点击关闭窗口
setup() 设置主窗口参数

width C if an integer, a size in pixels, if a float, a fraction of the screen; default is 50% of screen 宽 度
height C if an integer, the height in pixels, if a float, a fraction of the screen; default is 75% of screen 高度
startx C 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 C 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() 设置绘画窗口标题

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


  • 上一条:
    Python 静态方法和类方法实例分析
    下一条:
    python 实现兔子生兔子示例
  • 昵称:

    邮箱:

    0条评论 (评论内容有缓存机制,请悉知!)
    最新最热
    • 分类目录
    • 人生(杂谈)
    • 技术
    • linux
    • Java
    • php
    • 框架(架构)
    • 前端
    • ThinkPHP
    • 数据库
    • 微信(小程序)
    • Laravel
    • Redis
    • Docker
    • Go
    • swoole
    • Windows
    • Python
    • 苹果(mac/ios)
    • 相关文章
    • 在python语言中Flask框架的学习及简单功能示例(0个评论)
    • 在Python语言中实现GUI全屏倒计时代码示例(0个评论)
    • Python + zipfile库实现zip文件解压自动化脚本示例(0个评论)
    • python爬虫BeautifulSoup快速抓取网站图片(1个评论)
    • vscode 配置 python3开发环境的方法(0个评论)
    • 近期文章
    • 在windows10中升级go版本至1.24后LiteIDE的Ctrl+左击无法跳转问题解决方案(0个评论)
    • 智能合约Solidity学习CryptoZombie第四课:僵尸作战系统(0个评论)
    • 智能合约Solidity学习CryptoZombie第三课:组建僵尸军队(高级Solidity理论)(0个评论)
    • 智能合约Solidity学习CryptoZombie第二课:让你的僵尸猎食(0个评论)
    • 智能合约Solidity学习CryptoZombie第一课:生成一只你的僵尸(0个评论)
    • 在go中实现一个常用的先进先出的缓存淘汰算法示例代码(0个评论)
    • 在go+gin中使用"github.com/skip2/go-qrcode"实现url转二维码功能(0个评论)
    • 在go语言中使用api.geonames.org接口实现根据国际邮政编码获取地址信息功能(1个评论)
    • 在go语言中使用github.com/signintech/gopdf实现生成pdf分页文件功能(0个评论)
    • gmail发邮件报错:534 5.7.9 Application-specific password required...解决方案(0个评论)
    • 近期评论
    • 122 在

      学历:一种延缓就业设计,生活需求下的权衡之选中评论 工作几年后,报名考研了,到现在还没认真学习备考,迷茫中。作为一名北漂互联网打工人..
    • 123 在

      Clash for Windows作者删库跑路了,github已404中评论 按理说只要你在国内,所有的流量进出都在监控范围内,不管你怎么隐藏也没用,想搞你分..
    • 原梓番博客 在

      在Laravel框架中使用模型Model分表最简单的方法中评论 好久好久都没看友情链接申请了,今天刚看,已经添加。..
    • 博主 在

      佛跳墙vpn软件不会用?上不了网?佛跳墙vpn常见问题以及解决办法中评论 @1111老铁这个不行了,可以看看近期评论的其他文章..
    • 1111 在

      佛跳墙vpn软件不会用?上不了网?佛跳墙vpn常见问题以及解决办法中评论 网站不能打开,博主百忙中能否发个APP下载链接,佛跳墙或极光..
    • 2016-10
    • 2016-11
    • 2018-04
    • 2020-03
    • 2020-04
    • 2020-05
    • 2020-06
    • 2022-01
    • 2023-07
    • 2023-10
    Top

    Copyright·© 2019 侯体宗版权所有· 粤ICP备20027696号 PHP交流群

    侯体宗的博客