Python标准库【turtle】2 控制画布


turtle模块的Screen类,封装了控制画布的方法。

调用Screen类的方式:

# 直接使用Screen类
from turtle import Screen
s = Screen()

# 使用Turtle实例的screen属性
from turtle import Turtle
t = Turtle()
s = t.screen

# 使用模块也能直接调用Screen的方法
import turtle as s

参考:turtle模块官方文档


1 画布控制

1.1 画布状态

Screen类继承于TurtleScreen类,TurtleScreen又继承自Tkinter的Canvas类。Canvas表示绘图区域。由于“屏幕”这个词无法分清绘图区、窗口、显示屏等,所以后续用“画布”来指代Screen类。

背景色
s.bgcolor(*args)
设置或返回背景颜色。
args可填一个颜色符串,或3个rgb值,或rgb元组。rgb值的范围要在colormode设置的范围内。

背景图片
s.bgpic(picname=None)
设置或返回背景图片名称。
picname为文件名,则将对应图片作为背景;picname为“nopic”,则删除当前背景。

清空所有绘图
s.clearscreen()
删除所有海龟绘图,把画布重置为初始状态:白色背景、无图片、无事件绑定并启用追踪。

重置画布
s.resetscreen()
重置画布上所有海龟为初始状态。

设置画布大小
s.screensize(canvwidth=None, canvheight=None, bg=None)
改变海龟绘图的画布大小。
窗口大小不会改变,画布过大时会出现滚动条,此前绘制在画布之外的图形会变得可见。
canwidth和canvheight是像素表示的宽和高,bg是颜色字符串或颜色元组。

1.2 动画控制

延迟
s.delay(delay=None)
设置或返回以毫秒数表示的延迟值,默认值10。约等于连续两次画布刷新的间隔时间。
绘图延迟越长,动画速度越慢。
海龟的speed是海龟移动的速度,这里的delay是画布展示海龟动画的刷新间隔。
最终呈现的海龟画图速度,上限是speed确定的值,下限是delay设置的刷新速度决定的。

追踪
s.tracer(n=None, delay=None)
启用或禁用海龟动画并设置刷新图形的延迟时间。
如果指定n,则只有每第n次画布刷新时会实际执行绘画。n为0时,禁用追踪。
delay的效果和参数delay一样。
可用来加速复杂图形的绘制。

更新
s.update()
执行一次画布刷新,在禁用追踪时使用。

1.3 全局设置

海龟模式
s.mode(mode=None)
设置海龟模式并执行重置。不指定则返回当前模式。
mode可选standardlogoworld三种。

  • standard初始海龟朝东,画圆时角度为正表示逆时针方向;
  • logo初始海龟朝北,画圆时角度为正表示顺时针方向。
  • world模式使用用户自定义的坐标系,这个模式下横纵坐标的单位长度比例不等于1,角度会被扭曲。

自定义坐标系
s.setworldcoordinates(llx, lly, urx, ury)
设置用户的自定义坐标系,在必要时切换模式为“world”。会执行一次screen.reset()。如果已激活“world”模式,就把所有图形根据新坐标系重绘。
(llx, lly)是画布左下角的坐标,(urx, ury)是画布右上角的坐标。
用户自定义的坐标系中,角度可能会扭曲。

设置颜色模式
s.colormode(cmode=None)
返回或设置cmode的值为1或255两种。后续表示三原色的rgb值必须在0-cmode范围内。
默认cmode=1,rgb(1, 0, 0)为红色;cmode=255时,rgb(255, 0, 0)为红色。

当前可用的海龟形状列表
s.getshapes()

添加海龟形状
s.register_shape(name, shape=None) s.addshape(name, shape=None)
将一个海龟形状加入TurtleScreen的形状列表,这样海龟对象可以通过shape方法使用这个形状。
3中使用方式:

  1. name写为一个gif文件名,shape为None,就能安装这个形状。
  2. name为用户指定的字符串,shape为坐标值对构成的元组,可以安装元组表示的多边形。
  3. name为任意字符串,shape为Shape对象,可以安装Shape的形状。

获取底层画布
s.getcanvas()
返回Screen的Canvas对象。了解Tkinter内部Canvas机理的人使用。

画布上的海龟列表
s.turtles()

1.4 输入框

文本输入
s.textinput(title, prompt)
弹出一个对话框用来输入字符串,title时对话框的标题,prompt用来提示输入什么信息。
返回输入的字符串。关闭对话框,或在对话框点取消则返回None。

数字输入
s.numinput(title, prompt, default=None, minval=None, maxval=None)
弹出一个用于输入数值的对话框,返回输入的数值。
title是标题,prompt是提示信息。default是会在输入框中出现的默认值。
minvalmaxval限制输入的最大最小值,超出范围的话会弹出提示,对话框不会关闭。
对话框被取消则返回None。


2 窗口控制

s.window_height() 返回窗口高度
s.window_width() 返回窗口宽度
s.bye() 关闭海龟绘图窗口
s.title(titlestring) 设置窗口的标题

设置主窗口的大小和位置
s.setup(width=_CFG['width'], height=_CFG['height'], startx=_CFG['leftright], starty=_CFG['topbottom'])
默认值参数存在配置字典中,可以通过turtle.cfg文件修改。

  • turtle.cfg文件可以保存在turtle所在的目录,也能在当前工作目录存。优先使用当前工作目录的配置。
  • width填整数,表示宽度为多少像素;填浮点数,表示屏幕占比。默认为50%屏幕。
  • height为整数,表示高度为多少像素;为浮点数,表示屏幕占比。默认占75%屏幕。
  • startx为正,表示初始位置离屏幕左边缘多少像素,负值表示距离右边缘的像素数。None表示水平居中。
  • starty为正,表示初始位置距离屏幕上边缘多少像素,负值表示距离下边缘的像素,None表示垂直居中。

3 画布事件

3.1 按键或点击

监听事件
s.listen(xdummy=None, ydummy=None)
设置焦点到画布。画布在接收按键事件之前必须先得到焦点。

按键释放事件
s.onkey(fun, key) s.onkeyrelease(fun, key)
把fun指定的函数绑定到key指定按键的释放事件。fun为无参的函数,fun为None则移除事件绑定。

按键按下事件
s.onkeypress(fun, key=None)
把fun指定的函数绑定到key指定按键的释放事件。fun为无参的函数。key不指定时,任意键按下都会触发。

鼠标点击
s.onclick(fun, btn=1, add=None) s.onscreenclick(fun, btn=1, add=None)
把fun指定的函数绑定到鼠标点击事件。btn是鼠标按钮编号,默认1,表示鼠标左键。add为True则添加新的绑定,为False则取代先前绑定。
fun在调用时会传入点击画布的坐标。fun不指定则移除现有绑定。

鼠标点击时退出
s.exitonclick()
把bye方法绑定到画布的鼠标点击事件上。

3.2 其他事件

定时触发
s.ontimer(fun, t=0)
设定计时器,t毫秒后调用fun函数。fun时无参的函数。

事件主循环
s.mainloop() s.done()
开始事件循环。这里调用Tkinter的mainloop函数。
必须作为海龟绘图程序的结束语句。

以上的方法基本都继承父类TurtleScreen。Screen本身定义的方法有4个:s.byes.exitonclicks.setups.title


以上是turtle模块的Screen类封装的方法整理。
turtle模块的Turtle类的方法参考:turtle模块:控制海龟

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值