详解Python语言绘图Turtle库
小标 2018-06-13 来源 : 阅读 1383 评论 0

摘要:Turtle库是Python语言中一个很流行的绘制图像的函数库,想象一个小乌龟,在一个横轴为x、纵轴为y的坐标系原点,(0,0)位置开始,它根据一组函数指令的控制,在这个平面坐标系中移动,从而在它爬行的路径上绘制了图形。希望对大家学习Python语言有所帮助。

       Turtle库是Python语言中一个很流行的绘制图像的函数库,想象一个小乌龟,在一个横轴为x、纵轴为y的坐标系原点,(0,0)位置开始,它根据一组函数指令的控制,在这个平面坐标系中移动,从而在它爬行的路径上绘制了图形。希望对大家学习Python语言有所帮助。。

turtle绘图的基础知识:

1. 画布(canvas)

        画布就是turtle为我们展开用于绘图区域,我们可以设置它的大小和初始位置。

        设置画布大小

         turtle.screensize(canvwidth=None, canvheight=None, bg=None),参数分别为画布的宽(单位像素), 高, 背景颜色。

        如:turtle.screensize(800,600, "green")

               turtle.screensize() #返回默认大小(400, 300)

        turtle.setup(width=0.5, height=0.75, startx=None, starty=None),参数:width, height: 输入宽和高为整数时, 表示像素; 为小数时, 表示占据电脑屏幕的比例,(startx, starty): 这一坐标表示矩形窗口左上角顶点的位置, 如果为空,则窗口位于屏幕中心。

        如:turtle.setup(width=0.6,height=0.6)

               turtle.setup(width=800,height=800, startx=100, starty=100)

 

2. 画笔

2.1 画笔的状态

        在画布上,默认有一个坐标原点为画布中心的坐标轴,坐标原点上有一只面朝x轴正方向小乌龟。这里我们描述小乌龟时使用了两个词语:坐标原点(位置),面朝x轴正方向(方向), turtle绘图中,就是使用位置方向描述小乌龟(画笔)的状态。

2.2 画笔的属性

        画笔(画笔的属性,颜色、画线的宽度等)

        1) turtle.pensize():设置画笔的宽度;

        2) turtle.pencolor():没有参数传入,返回当前画笔颜色,传入参数设置画笔颜色,可以是字符串如"green", "red",也可以是RGB 3元组。

        3) turtle.speed(speed):设置画笔移动速度,画笔绘制的速度范围[0,10]整数,数字越大越快。

2.3 绘图命令

         操纵海龟绘图有着许多的命令,这些命令可以划分为3种:一种为运动命令,一种为画笔控制命令,还有一种是全局控制命令。

详解Python语言绘图Turtle库

详解Python语言绘图Turtle库

详解Python语言绘图Turtle库

详解Python语言绘图Turtle库

3. 命令详解

        3.1 turtle.circle(radius, extent=None, steps=None)

        描述:以给定半径画圆

        参数:

        radius(半径):半径为正(负),表示圆心在画笔的左边(右边)画圆;

        extent(弧度) (optional);

        steps (optional) (做半径为radius的圆的内切正多边形,多边形边数为steps)。

举例:

circle(50) # 整圆;

circle(50,steps=3) # 三角形;

circle(120, 180) # 半圆

 

实例:

1、太阳花

[python] view plain copy
1. # coding=utf-8  
2. import turtle  
3. import time  
4.   
5. # 同时设置pencolor=color1, fillcolor=color2  
6. turtle.color("red", "yellow")  
7.   
8. turtle.begin_fill()  
9. for _ in range(50):  
10. turtle.forward(200)  
11. turtle.left(170)  
12. turtle.end_fill()  
13.   
14. turtle.mainloop()

 详解Python语言绘图Turtle库

 

2、五角星

[python] view plain copy
1. # coding=utf-8  
2. import turtle  
3. import time  
4.   
5. turtle.pensize(5)  
6. turtle.pencolor("yellow")  
7. turtle.fillcolor("red")  
8.   
9. turtle.begin_fill()  
10. for _ in range(5):  
11.   turtle.forward(200)  
12.   turtle.right(144)  
13. turtle.end_fill()  
14. time.sleep(2)  
15.    
16. turtle.penup()  
17. turtle.goto(-150,-120)  
18. turtle.color("violet")  
19. turtle.write("Done", font=('Arial', 40, 'normal'))  
20.   
21. turtle.mainloop()

详解Python语言绘图Turtle库

3、时钟程序

[python] view plain copy
1. # coding=utf-8  
2.    
3. import turtle  
4. from datetime import *  
5.    
6. # 抬起画笔,向前运动一段距离放下  
7. def Skip(step):  
8.     turtle.penup()  
9.     turtle.forward(step)  
10.     turtle.pendown()  
11.    
12. def mkHand(name, length):  
13.     # 注册Turtle形状,建立表针Turtle  
14.     turtle.reset()  
15.     Skip(-length * 0.1)  
16.     # 开始记录多边形的顶点。当前的乌龟位置是多边形的第一个顶点。  
17.     turtle.begin_poly()  
18.     turtle.forward(length * 1.1)  
19.     # 停止记录多边形的顶点。当前的乌龟位置是多边形的最后一个顶点。将与第一个顶点相连。  
20.     turtle.end_poly()  
21.     # 返回最后记录的多边形。  
22.     handForm = turtle.get_poly()  
23.     turtle.register_shape(name, handForm)  
24.    
25. def Init():  
26.     global secHand, minHand, hurHand, printer  
27.     # 重置Turtle指向北  
28.     turtle.mode("logo")  
29.     # 建立三个表针Turtle并初始化  
30.     mkHand("secHand", 135)  
31.     mkHand("minHand", 125)  
32.     mkHand("hurHand", 90)  
33.     secHand = turtle.Turtle()  
34.     secHand.shape("secHand")  
35.     minHand = turtle.Turtle()  
36.     minHand.shape("minHand")  
37.     hurHand = turtle.Turtle()  
38.     hurHand.shape("hurHand")  
39.      
40.     for hand in secHand, minHand, hurHand:  
41.         hand.shapesize(1, 1, 3)  
42.         hand.speed(0)  
43.      
44.     # 建立输出文字Turtle  
45.     printer = turtle.Turtle()  
46.     # 隐藏画笔的turtle形状  
47.     printer.hideturtle()  
48.     printer.penup()  
49.       
50. def SetupClock(radius):  
51.     # 建立表的外框  
52.     turtle.reset()  
53.     turtle.pensize(7)  
54.     for i in range(60):  
55.         Skip(radius)  
56.         if i % 5 == 0:  
57.             turtle.forward(20)  
58.             Skip(-radius - 20)  
59.              
60.             Skip(radius + 20)  
61.             if i == 0:  
62.                 turtle.write(int(12), align="center", font=("Courier", 14, "bold"))  
63.             elif i == 30:  
64.                 Skip(25)  
65.                 turtle.write(int(i/5), align="center", font=("Courier", 14, "bold"))  
66.                 Skip(-25)  
67.             elif (i == 25 or i == 35):  
68.                 Skip(20)  
69.                 turtle.write(int(i/5), align="center", font=("Courier", 14, "bold"))  
70.                 Skip(-20)  
71.             else:  
72.                 turtle.write(int(i/5), align="center", font=("Courier", 14, "bold"))  
73.             Skip(-radius - 20)  
74.         else:  
75.             turtle.dot(5)  
76.             Skip(-radius)  
77.         turtle.right(6)  
78.           
79. def Week(t):     
80.     week = ["星期一", "星期二", "星期三",  
81.             "星期四", "星期五", "星期六", "星期日"]  
82.     return week[t.weekday()]  
83.    
84. def Date(t):  
85.     y = t.year  
86.     m = t.month  
87.     d = t.day  
88.     return "%s %d%d" % (y, m, d)  
89.    
90. def Tick():  
91.     # 绘制表针的动态显示  
92.     t = datetime.today()  
93.     second = t.second + t.microsecond * 0.000001  
94.     minute = t.minute + second / 60.0  
95.     hour = t.hour + minute / 60.0  
96.     secHand.setheading(6 * second)  
97.     minHand.setheading(6 * minute)  
98.     hurHand.setheading(30 * hour)  
99.       
100.     turtle.tracer(False)   
101.     printer.forward(65)  
102.     printer.write(Week(t), align="center",  
103.                   font=("Courier", 14, "bold"))  
104.     printer.back(130)  
105.     printer.write(Date(t), align="center",  
106.                   font=("Courier", 14, "bold"))  
107.     printer.home()  
108.     turtle.tracer(True)  
109.    
110.     # 100ms后继续调用tick  
111.     turtle.ontimer(Tick, 100)  
112.    
113. def main():  
114.     # 打开/关闭龟动画,并为更新图纸设置延迟。  
115.     turtle.tracer(False)  
116.     Init()  
117.     SetupClock(160)  
118.     turtle.tracer(True)  
119.     Tick()  
120.     turtle.mainloop()  
121.    
122. if __name__ == "__main__":  
123.     main()

详解Python语言绘图Turtle库

本文由职坐标整理并发布,了解更多内容,请关注职坐标编程语言Python频道!

本文由 @小标 发布于职坐标。未经许可,禁止转载。
喜欢 | 0 不喜欢 | 0
看完这篇文章有何感觉?已经有0人表态,0%的人喜欢 快给朋友分享吧~
评论(0)
后参与评论

您输入的评论内容中包含违禁敏感词

我知道了

助您圆梦职场 匹配合适岗位
验证码手机号,获得海同独家IT培训资料
选择就业方向:
人工智能物联网
大数据开发/分析
人工智能Python
Java全栈开发
WEB前端+H5

请输入正确的手机号码

请输入正确的验证码

获取验证码

您今天的短信下发次数太多了,明天再试试吧!

提交

我们会在第一时间安排职业规划师联系您!

您也可以联系我们的职业规划师咨询:

小职老师的微信号:z_zhizuobiao
小职老师的微信号:z_zhizuobiao

版权所有 职坐标-一站式IT培训就业服务领导者 沪ICP备13042190号-4
上海海同信息科技有限公司 Copyright ©2015 www.zhizuobiao.com,All Rights Reserved.
 沪公网安备 31011502005948号    

©2015 www.zhizuobiao.com All Rights Reserved

208小时内训课程