摘要: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种:一种为运动命令,一种为画笔控制命令,还有一种是全局控制命令。
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()
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()
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频道!
您输入的评论内容中包含违禁敏感词
我知道了
请输入正确的手机号码
请输入正确的验证码
您今天的短信下发次数太多了,明天再试试吧!
我们会在第一时间安排职业规划师联系您!
您也可以联系我们的职业规划师咨询:
版权所有 职坐标-一站式IT培训就业服务领导者 沪ICP备13042190号-4
上海海同信息科技有限公司 Copyright ©2015 www.zhizuobiao.com,All Rights Reserved.
沪公网安备 31011502005948号