draak

导航

turtle库的学习笔记(python)

turtle库的学习笔记(python)

        turtle(海龟)是Python重要的标准库之一,它能够进行基本的图形绘制。turtle图形绘制的概念诞生于1969年,成功应用于LOGO编程语言。
turtle库绘制图形有一个基本框架:一个小海龟在坐标系中爬行,其爬行轨迹形成了绘制图形。刚开始绘制时,小海龟位于画布正中央,此处坐标为(0,0),前进方向为水平右方。  在Python3系列版本安装目录的Lib文件下可以找到turtle.py文件。
       

  一、用import保留字对turtle库的引用有如下3种方式,效果相同:

(1)import turtle

 对turtle库中函数调用采用turtle.<函数名>( )形式:

(2)from turtle import * (当程序中有多个库时容易混淆产生错误)

对turtle库中函数调用采用<函数名>( )形式,不再使用turtle.作为前导:

  (3)  import turtle as t

保留字as将turtle库给予别名t, 则对turtle库中函数调用采用更简洁的t.<函数名>( )形式:

 二、绘图的基础知识

(1)绘图窗口设置命令

turtle.setup(400,300,200,100):参数以此(宽,高,距离屏幕左边距离,距离屏幕上方距离),屏幕左上角原点,单位像素。

 (2)运动命令

turtle.goto(x,y):直接跳转到(x,y)点,以绘图窗口中心为原点,向右为x轴,以上为y轴。

turtle.fd(d)、turtle.forward(d):以当前方向,往前行进d像素。

turtle.bk(d)、turtle.backword(d):保持当前方向不变,往后退行d像素。

turtle.circle(r,angle):从当前位置以r为半径圆的angle角度旋转。

(3)方向设置命令

turtle.seth(angle):以x轴方向为起点将方向偏转为angle度,逆时针为正。只改变行进方向但不行进。

turtle.left(angle):在当前行进方向的基础上,向左旋转angle度。

turtle.right(angle):在当前行进方向的基础上,向右旋转angle度。

(4)画笔控制命令

turtle.penup():抬笔

turtle.pendown():落笔

turtle.pensize(width):画笔粗细

turtle.pencolor(颜色名red/RGB三元组/颜色编码):画笔颜色

turtle.fillcolor(colorstring):绘制图形的填充颜色

turtle.begin_fill():开始填充

turtle.end_fill():结束填充

turtle.filling():返回当前是否在填充状态

(5)全局控制命令

turtle.clear():清空turtle窗口,但是turtle的位置和状态不会改变

turtle.reset():清空窗口,重置turtle状态为起始状态

turtle.undo():撤销上一个turtle动作

turtle.isvisible():返回当前turtle是否可见
stamp():复制当前图形
turtle.write(s[,font=("font-name",font_size,"font_type")]):写文本,s为文本内容,font是字体的参数,里面分别为字体名称,大小和类型;font为可选项, font的参数也是可选项

三、绘图举例

(1)彩色小蟒蛇

 1 #PythonDraw.py
 2 import turtle as tt
 3 def drawSnake(rad,angle,len,neckrad):
 4     colors=["LightCoral","orange","yellow","MediumSpringGreen","cyan","MediumBlue"]#六种颜色
 5     for i in range(len):
 6         tt.color(colors[i])
 7         tt.circle(rad,angle)
 8         tt.circle(-rad,angle)
 9     tt.color("Fuchsia")
10     tt.circle(rad,angle/2)
11     tt.fd(rad)
12     tt.circle(neckrad+1,180)
13     tt.fd(rad*2/3)
14 
15 
16 def main():
17     tt.setup(1300,800,0,0)
18     tt.penup()
19     tt.goto(-350,0)
20     tt.pendown()
21     pythonsize=30
22     tt.pensize(30)
23     tt.seth(-40)
24     drawSnake(40,80,6,pythonsize/2)
25     
26 
27 main()
28 tt.done()

Python小海龟绘图之颜色码对照表:

https://mp.weixin.qq.com/s?src=11&timestamp=1584246963&ver=2217&signature=lMb0twV32ZppcpRo3AfqFMZi0vtHB3oLPjjYMCACHz9PNO7EoncrvGCRWUeg5FYzGioV2aAExFCASNJUG7vGl2R5THDCOZwiQqHF0DvHGH4i7u3KYCY*LPJW11OuBrkj&new=1

 

(2)玫瑰花的绘制

 

  1 from turtle import *
  2 import time
  3 
  4 setup(5000,5000,0,0)
  5 speed(0)
  6 penup()
  7 pencolor("SaddleBrown")   #改变画笔颜色
  8 seth(90)
  9 fd(340)
 10 seth(0)
 11 pendown()
 12 
 13 speed(5)
 14 begin_fill()
 15 fillcolor('blue')   #改变花瓣颜色
 16 circle(50,30)
 17 
 18 for i in range(10):
 19     fd(1)
 20     left(10)
 21 
 22 circle(40,40)
 23 
 24 for i in range(6):
 25     fd(1)
 26     left(3)
 27 
 28 circle(80,40)
 29 
 30 for i in range(20):
 31     fd(0.5)
 32     left(5)
 33 
 34 circle(80,45)
 35 
 36 for i in range(10):
 37     fd(2)
 38     left(1)
 39 
 40 circle(80,25)
 41 
 42 for i in range(20):
 43     fd(1)
 44     left(4)
 45 
 46 circle(50,50)
 47 
 48 time.sleep(0.1)
 49 
 50 circle(120,55)
 51 
 52 speed(0)
 53 
 54 seth(-90)
 55 fd(70)
 56 
 57 right(150)
 58 fd(20)
 59 
 60 left(140)
 61 circle(140,90)
 62 
 63 left(30)
 64 circle(160,100)
 65 
 66 left(130)
 67 fd(25)
 68 
 69 penup()
 70 right(150)
 71 circle(40,80)
 72 pendown()
 73 
 74 left(115)
 75 fd(60)
 76 
 77 penup()
 78 left(180)
 79 fd(60)
 80 pendown()
 81 
 82 end_fill()
 83 
 84 right(120)
 85 circle(-50,50)
 86 circle(-20,90)
 87 
 88 speed(1)
 89 fd(75)
 90 
 91 speed(0)
 92 circle(90,110)
 93 
 94 penup()
 95 left(162)
 96 fd(185)
 97 left(170)
 98 pendown()
 99 circle(200,10)
100 circle(100,40)
101 circle(-52,115)
102 left(20)
103 circle(100,20)
104 circle(300,20)
105 speed(1)
106 fd(250)
107 
108 penup()
109 speed(0)
110 left(180)
111 fd(250)
112 circle(-300,7)
113 right(80)
114 circle(200,5)
115 pendown()
116 
117 left(60)
118 begin_fill()
119 fillcolor('gold')   #改变叶子颜色
120 circle(-80,100)
121 right(90)
122 fd(10)
123 left(20)
124 circle(-63,127)
125 end_fill()
126 
127 penup()
128 left(50)
129 fd(20)
130 left(180)
131 
132 pendown()
133 circle(200,25)
134 
135 penup()
136 right(150)
137 
138 fd(180)
139 
140 right(40)
141 pendown()
142 begin_fill()
143 fillcolor('gold')   #改变叶子颜色
144 circle(-100,80)
145 right(150)
146 fd(10)
147 left(60)
148 circle(-80,98)
149 end_fill()
150 
151 penup()
152 left(60)
153 fd(13)
154 left(180)
155 
156 pendown()
157 speed(1)
158 circle(-200,23)
159 
160 
161 
162 exitonclick()

 

 

 

 

 

posted on 2020-03-15 13:17  c-pig  阅读(1916)  评论(0编辑  收藏  举报