python学习笔记 turtle类使用

来源:互联网 发布:北师大网络教育官网 编辑:程序博客网 时间:2024/06/05 02:21

一、导入
导入方式一:

from turtle import *

这种方式导入的话,可以在文件中直接使用该库的所有的方法。
例如:(设置一个300*300,画笔在100*100的位置上,画一个圆)

from turtle import *setup(300,300,100,100)//设置界面为300*300pensize(2)pencolor('blue')circle(30)mainloop()

导入方式二:

import turtle

如上的例子,这种导入的方式的写法如下

import turtlet=turtle.Turtle()turtle.setup(300,300,300,100)t.pensize(2)t.pencolor('blue')t.circle(30)turtle.mainloop()

其中,turtle.Turtle()是一个画笔的对象。
有关绘制和设置画笔相关的就是画笔的属性。
turtle.setup和turtle.mainloop设置的是画布的属性。

二方法介绍
画布的方法:
setup(width,height,floatx,floaty)设置绘制区域

绘制开始前调用tracer(False)
绘制结束之后tracer(True)
这个方法是直接展示给用户绘制结果,无需漫长的等待绘制过程,这个方法turtle里有,turle.Turtle里面也有,效果是一样的。

register_shape(name,shape) & addshape(name,shape)
源码

addshape = register_shape

所以这两个方法实际上是一样的。
注册一个图形
使用:

import turtlet=turtle.Turtle()turtle.setup(300,300,300,100)t.pensize(2)t.pencolor('blue')turtle.tracer(False)t.penup()t.begin_poly()#开始记录多边形的顶点for i in range(6):    t.forward(100)    t.right(60)t.end_poly()#获取多边形shape=t.get_poly()#注册多边形turtle.register_shape("shape",shape)t.pendown()t.shape('shape')#绘制这个图形turtle.tracer(True)turtle.mainloop()

shape 绘制的图形

bgcolor(color) 设置屏幕的背景颜色
eg:turtle.bgcolor(‘red’)

bgpic(picname)设置屏幕背景图案
ps:这个还未设置成功,日后在试

mode(mode)画笔的起始方向
默认为standard,正东方向
logo 正北方向
world 世界坐标系,这种方式不太懂
源码写着:

'world' uses userdefined 'worldcoordinates'. *Attention*: in        this mode angles appear distorted if x/y unit-ratio doesn't equal 1.        If mode is not given, return the current mode.

意思是:
如果x / y单位比例不等于1,则这种模式角度会出现扭曲。应该是跟地球投影相类似的

ontimer(fun,t=0)定时器,定时执行fun函数

title(title)设置窗口的标题
bye() 销毁屏幕上的对象
源码:

    def _destroy(self):        root = self._root        if root is _Screen._root:            Turtle._pen = None            Turtle._screen = None            _Screen._root = None            _Screen._canvas = None        TurtleScreen._RUNNING = False        root.destroy()    def bye(self):        """Shut the turtlegraphics window.        Example (for a TurtleScreen instance named screen):        >>> screen.bye()        """        self._destroy()

调用bye函数之后,就不能调用画笔了
eg:

turtle.bye()t.circle(60)

执行之后:

Traceback (most recent call last):  File "E:/python/myturtle.py", line 540, in <module>    t.circle(60)  File "D:\Python27\lib\lib-tk\turtle.py", line 1903, in circle    self.speed(0)

clearscreen()清除屏幕中绘制的东西
colormode(mode)设置画笔的颜色的表示方式
mode的值只能是1和255
默认mode=1画笔颜色的设置如下任一种都可以:

t.pencolor('red')t.pencolor('#aeffff')

当然如果mode=255的时候,以上两种设置依然生效。
mode=255的时候可以调用t.pencolor(r,g,b)的方法,如下所示:

t.pencolor(24,2,255)

但是上面的方法在mode=1的时候是不允许调用的。
delay(t) 设置画笔延迟时间,其实跟ontimer类似,只不过ontimer有指定自己的绘制函数,而delay调用的是turtle内部的绘制函数。
源码:

    def delay(self, delay=None):        """ Return or set the drawing delay in milliseconds.        Optional argument:        delay -- positive integer        Example (for a TurtleScreen instance named screen):        >>> screen.delay(15)        >>> screen.delay()        15        """        if delay is None:            return self._delayvalue        self._delayvalue = int(delay)

delay内部将delay给了_delayvalue ,我们再看下这个值,其实是TurtleScreen里的属性。这个值在_update里使用.

 def _update(self):        """Perform a Turtle-data update.        """        screen = self.screen        if screen._tracing == 0:            return        elif screen._tracing == 1:            self._update_data()            self._drawturtle()            screen._update()                  # TurtleScreenBase            screen._delay(screen._delayvalue) # TurtleScreenBase        else:            self._update_data()            if screen._updatecounter == 0:                for t in screen.turtles():                    t._drawturtle()                screen._update()    def _delay(self, delay):        """Delay subsequent canvas actions for delay ms."""        self.cv.after(delay)

然后看下ontimer函数

 def _ontimer(self, fun, t):        """Install a timer, which calls fun after t milliseconds.        """        if t == 0:            self.cv.after_idle(fun)        else:            self.cv.after(t, fun)

exitonclick()点击屏幕退出

画笔的方法:
pensize(size)设置画笔大小
pencolor(color)设置画笔颜色
seth(angle)设置画笔的方向
正东方向逆时针0-360
circle(rad,angele)rad圆的半径,为正在半径的左边,为负在半径的右边
angle 绘制的角度值 360为一个圆
fd(rad)向前直线爬行距离rad
penup()画笔抬起
pendown()画笔放下
begin_poly() & end_poly() 一组
记录多边形路径
get_poly()获取记录的多边形
shapesize(stretch_wid,stretch_len,outline)设置图形的大小,参数:宽度拉伸,长度拉伸,图形宽度
resizemode(rmode)设置图像大小模式
参数rmode的值:“auto”适应画笔的外观对应于pensize的值。
“user”按照适应画笔的外观 stretchfactor和outlinewidth(outline)的值, 这是由shapesize()设置的。通过调用具有参数的shapeize来调用
“noresize”画笔的外观不适应

持续整理中…