python学习笔记 turtle类使用


一、导入
导入方式一:

from turtle import *

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

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

导入方式二:

import turtle

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

import turtle
t=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 turtle

t=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”画笔的外观不适应

持续整理中…

  • 13
    点赞
  • 37
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值