• 售前

  • 售后

热门帖子
入门百科

python绘图模块之使用turtle画图

[复制链接]
麦子971 显示全部楼层 发表于 2021-10-25 18:32:03 |阅读模式 打印 上一主题 下一主题
模块之turtle

小故事
前两天朋侪说:“常文啊!听说你会python,那能不能用python画一些悦目标图呢?”然后我特意去学了一下turtle模块,现在给大家分享一下。
一、什么是turtle

Turtle是python内嵌的绘制线、圆以及其他外形(包罗文本)的图形模块。
二、turtle函数的使用
  1. import turtle
  2. turtle.pendown() # 放下画笔
  3. turtle.penup() # 抬起画笔
  4. turtle.pensize(int) # 设置画笔宽度,值为整数型
  5. turtle.forward(float) # 讲话比向前移动一定的角度
  6. turtle.backward(float) # 将画笔向后移动一定的角度
  7. turtle.right(angle) # 将画笔右转一定的角度
  8. turtle.left(angle) # #将画笔左转一定的角度
  9. turtle.goto(x,y) # 将画笔移动到一个指定的绝对坐标
  10. turtle.setx(x) # 设置画笔向x方向移动的距离,值为实数
  11. turtle.sety(y) # 设置画笔向y方向移动的距离,值为实数
  12. turtle.setheading(angle) # 设定turtle箭头的方向为指定方向,0–东 90—北
  13. turtle.home() # 将画笔返回到原点
  14. turtle.circle(r,ext,steps=int) # 绘制一个设置半径和阶数的圆(设置之后会绘制多边形)
  15. turtle.dot(d,color) # 绘制一个指定直径的圆点,颜色为字符串类型
  16. turtle.undo() #取消最后一个图操作
  17. turtle.speed(s) # 设置画笔速度,为整数类型,且取值在1-10之间
  18. turtle.color(‘str') # 设置画笔颜色,为字符串类型
  19. turtle.fillcolor(‘str') # 设置填充颜色,为字符串类型
  20. turtle.begin_fill() # 结束填充
  21. turtle.end_fill() # 开始填充
  22. turtle.filling() # 返回填充状态,True表示填充,False表示没有填充
  23. turtle.clear() # 清除窗口所有内容
  24. turtle.reset() # 清除窗口,将状态和位置复位为初始值
  25. turtle.screensize(w,h) # 设置turtle显示的大小,并设置宽度和高度
  26. turtle.hideturtle() # 隐藏turtle箭头
  27. turtle.showturtle() # 显示turtle窗口
  28. turtle.done() # 使turtle窗口不会自动消失
  29. turtle.isvisible() # 如果turtle可见,返回turtle
  30. turtle.write(‘str',font=(“Arial”,8,“normal”)) # 在turtle位置编写字符串s,字体由字体名、字体大小、字体类型三部分组成
  31. turtle.position() # 获取画笔的坐标,返回一个元组,值为浮点型
复制代码
案例一:根本使用
  1. import turtle
  2. import time
  3. turtle.pensize(3)
  4. turtle.showturtle() # 显示箭头
  5. turtle.write("吴常文") # 写字符串
  6. turtle.forward(300) # 前进100像素
  7. turtle.color("red") # 画笔颜色改为red
  8. turtle.left(90) # 箭头左转90度
  9. turtle.forward(300)
  10. turtle.goto(0,50) # 去坐标(0,50)
  11. turtle.goto(0,0) # 回到原点
  12. turtle.penup() # 抬笔,这样路径向上
  13. turtle.goto(0,300)
  14. turtle.goto(0,0)
  15. turtle.pendown() # 下笔,这样路径向下
  16. turtle.goto(0,50)
  17. turtle.goto(50,50)
  18. turtle.circle(100) # 画圆
  19. time.sleep(5) # 睡5秒
复制代码
效果图1:

案例二:五角星
  1. import turtle
  2. import time
  3. turtle.pensize(5)
  4. turtle.pencolor("yellow")
  5. turtle.fillcolor("red")
  6. turtle.begin_fill()
  7. for _ in range(5):
  8. turtle.forward(200)
  9. turtle.right(144)
  10. turtle.end_fill()
  11. time.sleep(2)
  12. turtle.penup()
  13. turtle.goto(-150, -120)
  14. turtle.color("violet")
  15. turtle.write("五角星", font=('Arial', 22, 'normal'))
  16. turtle.mainloop()
复制代码
效果图2:

案例三:奥运五环
  1. #!/user/bin/python3
  2. # --*--coding: utf-8 --*--
  3. # @Time: 2021/2/10 12:22
  4. # @Author:吴常文
  5. # @File: 03奥运五环
  6. import turtle
  7. import time
  8. turtle.width(10) # 宽度
  9. turtle.color("red")
  10. turtle.circle(50)
  11. turtle.color("blue")
  12. turtle.penup()
  13. turtle.goto(120,0)
  14. turtle.pendown()
  15. turtle.circle(50)
  16. turtle.color("black")
  17. turtle.penup()
  18. turtle.goto(240,0)
  19. turtle.pendown()
  20. turtle.circle(50)
  21. turtle.color("yellow")
  22. turtle.penup()
  23. turtle.goto(60,-50)
  24. turtle.pendown()
  25. turtle.circle(50)
  26. turtle.color("green")
  27. turtle.penup()
  28. turtle.goto(180,-50)
  29. turtle.pendown()
  30. turtle.circle(50)
  31. time.sleep(3)
复制代码
效果图3:

案例四:给你一朵玫瑰花
  1. import turtle
  2. import time
  3. # 设置初始位置
  4. turtle.penup()
  5. turtle.left(90)
  6. turtle.fd(200)
  7. turtle.pendown()
  8. turtle.right(90)
  9. # 花蕊
  10. turtle.fillcolor("red")
  11. turtle.begin_fill()
  12. turtle.circle(10, 180)
  13. turtle.circle(25, 110)
  14. turtle.left(50)
  15. turtle.circle(60, 45)
  16. turtle.circle(20, 170)
  17. turtle.right(24)
  18. turtle.fd(30)
  19. turtle.left(10)
  20. turtle.circle(30, 110)
  21. turtle.fd(20)
  22. turtle.left(40)
  23. turtle.circle(90, 70)
  24. turtle.circle(30, 150)
  25. turtle.right(30)
  26. turtle.fd(15)
  27. turtle.circle(80, 90)
  28. turtle.left(15)
  29. turtle.fd(45)
  30. turtle.right(165)
  31. turtle.fd(20)
  32. turtle.left(155)
  33. turtle.circle(150, 80)
  34. turtle.left(50)
  35. turtle.circle(150, 90)
  36. turtle.end_fill()
  37. # 花瓣1
  38. turtle.left(150)
  39. turtle.circle(-90, 70)
  40. turtle.left(20)
  41. turtle.circle(75, 105)
  42. turtle.setheading(60)
  43. turtle.circle(80, 98)
  44. turtle.circle(-90, 40)
  45. # 花瓣2
  46. turtle.left(180)
  47. turtle.circle(90, 40)
  48. turtle.circle(-80, 98)
  49. turtle.setheading(-83)
  50. # 叶子1
  51. turtle.fd(30)
  52. turtle.left(90)
  53. turtle.fd(25)
  54. turtle.left(45)
  55. turtle.fillcolor("green")
  56. turtle.begin_fill()
  57. turtle.circle(-80, 90)
  58. turtle.right(90)
  59. turtle.circle(-80, 90)
  60. turtle.end_fill()
  61. turtle.right(135)
  62. turtle.fd(60)
  63. turtle.left(180)
  64. turtle.fd(85)
  65. turtle.left(90)
  66. turtle.fd(80)
  67. # 叶子2
  68. turtle.right(90)
  69. turtle.right(45)
  70. turtle.fillcolor("green")
  71. turtle.begin_fill()
  72. turtle.circle(80, 90)
  73. turtle.left(90)
  74. turtle.circle(80, 90)
  75. turtle.end_fill()
  76. turtle.left(135)
  77. turtle.fd(60)
  78. turtle.left(180)
  79. turtle.fd(60)
  80. turtle.right(90)
  81. turtle.circle(200, 60)
  82. turtle.up()
  83. turtle.goto(100, -300)
  84. turtle.write("Send you a flower, bring you home")
  85. time.sleep(5)
复制代码
效果图4:

案例五:爱心树
  1. #!/user/bin/python3
  2. # --*--coding: utf-8 --*--
  3. # @Time: 2021/2/10 21:56
  4. # @Author:吴常文
  5. # @File: 05 爱心树
  6. from turtle import Turtle, mainloop
  7. import turtle
  8. def tree(plist, l, a, f):
  9. """ plist是笔的列表
  10. l是分支
  11. a的长度是两个分支之间夹角的一半
  12. f是分支之间逐级缩短的系数。"""
  13. if l > 5: #
  14.   lst = []
  15.   for p in plist:
  16.    p.forward(
  17.     l) # 沿着当前的方向画画按照海龟前进的方向,向前移动指定的距离。
  18.    q = p.clone() # 创建并返回具有相同位置、标题和turtle属性的海龟的克隆。
  19.    p.left(a) # 以角度单位将海龟向左翻转
  20.    q.right(
  21.     a) # 以角度单位将海龟右转,nit是默认的角度,但可以通过degrees()和radians()函数设置。
  22.    lst.append(p) # 将元素增加到列表的最后
  23.    lst.append(q)
  24.   tree(lst, l * f, a, f)
  25. def main():
  26. p = Turtle()
  27. p.color("red")
  28. p.pensize(4)
  29. # p.setundobuffer(None)
  30. p.hideturtle() # 让乌龟隐形。这是一个好主意,当你在做一些复杂的绘图时,
  31. # 因为把乌龟藏起来能明显加快绘图速度。
  32. # p.speed(10)
  33. # p.getscreen().tracer(1,0)#Returtle.write("You are the secret of my heart")
  34. p.speed(4)
  35. # 然后可以为该对象调用TurtleScreen方法。
  36. p.left(90) # 方向以角度单位将海龟向左翻转。 调整画笔
  37. p.penup() # 向上拉笔——移动时不绘图。
  38. p.goto(0,
  39.    -200) # 移动海龟到一个绝对位置。如果笔放下了,画一条线。不要改变海龟的方向。
  40. p.pendown() # 向下拉笔——移动时绘图 这三条语句是一个组合相当于先把笔收起来再移动到指定位置,再把笔放下开始画
  41. # 否则turtle一移动就会自动的把线画出来
  42. # t = tree([p], 200, 65, 0.6375)
  43. t = tree([p], 200, 65, 0.6375)
  44. turtle.down()
  45. turtle.goto(-80, 70)
  46. turtle.write("There's a heart for you")
  47. turtle.done()
  48. main()
复制代码
效果图5:

案例六:给你一颗爱心
  1. #!/user/bin/python3
  2. # --*--coding: utf-8 --*--
  3. # @Time: 2021/2/10 22:07
  4. # @Author:吴常文
  5. # @File: 06 爱心
  6. import turtle
  7. import time
  8. def func():
  9. for i in range(200):
  10.   turtle.right(1)
  11.   turtle.forward(1)
  12. turtle.color('red', 'pink')
  13. turtle.pensize(2)
  14. turtle.speed(10)
  15. turtle.goto(0, 0)
  16. turtle.begin_fill()
  17. turtle.left(140)
  18. turtle.forward(112)
  19. func()
  20. turtle.left(120)
  21. func()
  22. turtle.forward(112)
  23. turtle.end_fill()
  24. turtle.pensize(5)
  25. turtle.up()
  26. turtle.goto(-80, 122.7)
  27. turtle.left(70)
  28. turtle.down()
  29. # turtle.forward(0)
  30. turtle.up()
  31. turtle.goto(100, -10)
  32. turtle.write("There's a heart for you")
  33. turtle.done()
  34. time.sleep(3)
复制代码
效果图6:

案例七:五星红旗
  1. import turtle as t
  2. # 位移函数
  3. def Skip(t,x,y):
  4. t.penup()
  5. t.goto(x,y)
  6. t.pendown()
  7. # 绘制五星红旗
  8. def draw(t,x,y,z):
  9. t.begin_fill()
  10. for i in range(x):
  11.   t.forward(y)
  12.   t.left(z)
  13. t.end_fill()
  14. # 画笔基础设置
  15. t.screensize(1200,800)
  16. t.pensize(5)
  17. t.hideturtle()
  18. t.speed(5)
  19. t.pencolor("red")
  20. # 画笔移动
  21. Skip(t,0,-200)
  22. # 绘制国旗
  23. t.fillcolor("red")
  24. t.begin_fill()
  25. t.forward(300)
  26. t.left(90)
  27. t.forward(400)
  28. t.left(90)
  29. t.forward(600)
  30. t.left(90)
  31. t.forward(400)
  32. t.left(90)
  33. t.forward(300)
  34. t.end_fill()
  35. # 画笔移动
  36. Skip(t,-250,115)
  37. # 绘制大五角星
  38. t.pencolor("yellow")
  39. t.fillcolor("yellow")
  40. t.begin_fill()
  41. for i in range(5):
  42. t.forward(100)
  43. t.right(144)
  44. t.end_fill()
  45. """第一颗副星"""
  46. # 画笔移动
  47. Skip(t,-120,10)
  48. # 绘制小五星
  49. draw(t,5,30,144)
  50. """第二颗副星"""
  51. # 画笔移动
  52. Skip(t,-80,50)
  53. # 绘制小五星
  54. draw(t,5,30,144)
  55. """第三颗副星"""
  56. # 画笔移动
  57. Skip(t,-80,110)
  58. # 绘制小五星
  59. draw(t,5,30,144)
  60. """第四颗副星"""
  61. # 画笔移动
  62. Skip(t,-120,150)
  63. # 绘制小五星
  64. draw(t,5,30,144)
  65. t.done()
复制代码
效果图7:

总结

到此这篇关于python模块教程之使用turtle画图的文章就介绍到这了,更多相干python模块之turtle画图内容请搜索草根技术分享从前的文章或继续浏览下面的相干文章渴望大家以后多多支持草根技术分享!

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?立即注册

x

帖子地址: 

回复

使用道具 举报

分享
推广
火星云矿 | 预约S19Pro,享500抵1000!
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

草根技术分享(草根吧)是全球知名中文IT技术交流平台,创建于2021年,包含原创博客、精品问答、职业培训、技术社区、资源下载等产品服务,提供原创、优质、完整内容的专业IT技术开发社区。
  • 官方手机版

  • 微信公众号

  • 商务合作