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可选standard
,logo
,world
三种。
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中使用方式:
- name写为一个gif文件名,shape为None,就能安装这个形状。
- name为用户指定的字符串,shape为坐标值对构成的元组,可以安装元组表示的多边形。
- 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
是会在输入框中出现的默认值。
minval
、maxval
限制输入的最大最小值,超出范围的话会弹出提示,对话框不会关闭。
对话框被取消则返回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.bye
,s.exitonclick
,s.setup
,s.title
。
以上是turtle
模块的Screen
类封装的方法整理。
turtle
模块的Turtle
类的方法参考:turtle模块:控制海龟