trutle画图之可显示任意数字的晶体数码管设计

举报
灰小猿 发表于 2021/05/26 13:43:39 2021/05/26
【摘要】 目录 晶体数码管绘制顺序 晶体数码管绘制函数 获取并绘制当前时间 Hello!你好哇,我是灰小猿!一个超会写bug的程序猿! 今天和大家分享一个关于使用Python绘制晶体数码管管的项目,目的是能够使用该程序会,任意的绘制出数字,先来看一个绘制数字0~9的效果: 晶体数码管绘制顺序 晶体数码管的绘制,是采用trutle库来进行绘制,数码管的绘制顺序如下: ...

目录

晶体数码管绘制顺序

晶体数码管绘制函数

获取并绘制当前时间


Hello!你好哇,我是灰小猿!一个超会写bug的程序猿!

今天和大家分享一个关于使用Python绘制晶体数码管管的项目,目的是能够使用该程序会,任意的绘制出数字,先来看一个绘制数字0~9的效果:

晶体数码管绘制顺序

晶体数码管的绘制,是采用trutle库来进行绘制,数码管的绘制顺序如下:

从图中可以看出,绘制起点在数码管的中部左侧,在这七段数码管中,无论每一段是否被绘制出来,画笔都会按照上方的顺序绘制完这七段。

 

晶体数码管绘制函数


  
  1. from turtle import *
  2. import datetime
  3. #数码管间隔函数
  4. def drawGap():
  5. penup()
  6. fd(5)
  7. #单段数码管绘制
  8. def drawLine(draw):
  9. drawGap()
  10. if draw :
  11. pendown()
  12. else:
  13. penup()
  14. fd(40)
  15. drawGap()
  16. right(90)
  17. #输入数据绘制
  18. def drawDigit(n):
  19. #第一段
  20. if n in [2,3,4,5,6,8,9]:
  21. drawLine(True)
  22. else:
  23. drawLine(False)
  24. #第二段
  25. if n in [0,1,3,4,5,6,7,8,9]:
  26. drawLine(True)
  27. else:
  28. drawLine(False)
  29. #第三段
  30. if n in [0,2,3,5,6,8,9]:
  31. drawLine(True)
  32. else:
  33. drawLine(False)
  34. #第四段
  35. if n in [0,2,6,8]:
  36. drawLine(True)
  37. else:
  38. drawLine(False)
  39. left(90)
  40. #第五段
  41. if n in [0,4,5,6,8,9]:
  42. drawLine(True)
  43. else:
  44. drawLine(False)
  45. #第六段
  46. if n in [0,2,3,5,6,7,8,9]:
  47. drawLine(True)
  48. else:
  49. drawLine(False)
  50. #第七段
  51. if n in [0,1,2,3,4,7,8,9]:
  52. drawLine(True)
  53. else:
  54. drawLine(False)
  55. left(180)
  56. penup()
  57. fd(20)
  58. if __name__ == "__main__":
  59. #绘制数字0~9
  60. for i in range(0,10):
  61. drawDigit(i)

获取并绘制当前时间

接下来是通过上面的绘制数码管的函数,获取当前时间并显示:


  
  1. from turtle import *
  2. import datetime
  3. import time
  4. #数码管间隔函数
  5. def drawGap():
  6. penup()
  7. fd(5)
  8. #单段数码管绘制
  9. def drawLine(draw):
  10. drawGap()
  11. if draw :
  12. pendown()
  13. else:
  14. penup()
  15. fd(40)
  16. drawGap()
  17. right(90)
  18. #输入数据绘制
  19. def drawDigit(n):
  20. #第一段
  21. if n in [2,3,4,5,6,8,9]:
  22. drawLine(True)
  23. else:
  24. drawLine(False)
  25. #第二段
  26. if n in [0,1,3,4,5,6,7,8,9]:
  27. drawLine(True)
  28. else:
  29. drawLine(False)
  30. #第三段
  31. if n in [0,2,3,5,6,8,9]:
  32. drawLine(True)
  33. else:
  34. drawLine(False)
  35. #第四段
  36. if n in [0,2,6,8]:
  37. drawLine(True)
  38. else:
  39. drawLine(False)
  40. left(90)
  41. #第五段
  42. if n in [0,4,5,6,8,9]:
  43. drawLine(True)
  44. else:
  45. drawLine(False)
  46. #第六段
  47. if n in [0,2,3,5,6,7,8,9]:
  48. drawLine(True)
  49. else:
  50. drawLine(False)
  51. #第七段
  52. if n in [0,1,2,3,4,7,8,9]:
  53. drawLine(True)
  54. else:
  55. drawLine(False)
  56. left(180)
  57. penup()
  58. fd(20)
  59. #根据输入内容进行绘制
  60. def drawDate(date):
  61. for i in date:
  62. if i=="-":
  63. write("年",font=("楷体",20,"normal"))
  64. fd(40)
  65. elif i=="=":
  66. write("月",font=("楷体",20,"normal"))
  67. fd(40)
  68. elif i=="_":
  69. write("日",font=("楷体",20,"normal"))
  70. fd(40)
  71. elif i=="+":
  72. write("时",font=("楷体",20,"normal"))
  73. fd(40)
  74. elif i=="#":
  75. write("分",font=("楷体",20,"normal"))
  76. fd(40)
  77. elif i=="*":
  78. write("秒",font=("楷体",20,"normal"))
  79. fd(40)
  80. else:
  81. drawDigit(eval(i))
  82. if __name__ == "__main__":
  83. setup(800,400,100,100)
  84. pensize(5)
  85. pencolor("red")
  86. penup()
  87. fd(-550)
  88. while(True):
  89. drawDate(datetime.datetime.now().strftime("%Y-%m=%d_%H+%M#%S*"))

效果如下:

觉得有用记得点赞关注哟!

大灰狼陪你一起进步!

 

文章来源: blog.csdn.net,作者:灰小猿,版权归原作者所有,如需转载,请联系作者。

原文链接:blog.csdn.net/weixin_44985880/article/details/108703654

【版权声明】本文为华为云社区用户转载文章,如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。