欢迎关注天善智能,我们是专注于商业智能BI,人工智能AI,大数据分析与挖掘领域的垂直社区,学习,问答、求职一站式搞定!

对商业智能BI、大数据分析挖掘、机器学习,python,R等数据领域感兴趣的同学加微信:tstoutiao,邀请你进入数据爱好者交流群,数据爱好者们都在这儿。

作者:Ahab,专注与 Python 数据挖掘、数据分析与机器学习

公众号:Ahab杂货铺

推荐阅读:推荐几个Python与AI方向的公众号

“你告诉爷爷你需要什么东西呀,爷爷给你准备,佩奇,什么是佩奇呀?”...

这是一个发生在大山里的故事,但故事的情节所有人都不会陌生。快过年了,在农村爷爷给城里的孙子打电话,孙子说想要“佩奇”,为了满足孩子的心愿,爷爷开始满村子找佩奇…

当除夕夜家人团聚,爷爷开始展示爱心礼物,“硬核佩奇”的出现,惊呆众人高能反转,别出心裁的爱跨越了隔代距离,成功博得孙子欢心。

啥是佩奇?已不重要。佩奇是他用搜集的所有信息,一点一滴的用心创造、编织爱的过程。佩奇是对孙子的关爱、佩奇是对团圆的企盼。

看着爷爷满村子找佩奇,鼻子有点酸,作为程序猿我想用Python来告诉爷爷,啥是佩奇?用python做一个社会人,这是很久之前的一篇文章,Turtle是自己接触python之后用到的第一个库,Trutle这个库很有意思,很容易得到满足感,学习完以后自己随手画了一个佩奇,佩奇当时没火没想到今天火了。今天的文章再次给大家介绍一下Turtle,用它来画高级一点的东西,话不多说我们开始吧。

程序介绍

在Python中有很多编写图形程序的方法,一个简单的启动图形化程序设计的方法是使用Python内嵌的Turtle模块。Turtle是Python内嵌的绘制线、圆以及其他形状(包括文本)的图形模块。它很容易学习并且使用简单。

一个Turtle实际上是一个对象,在导入Turtle模块时,就创建了对象,然后,可以调用Turtle对象的各种方法完成不同的操作。

当创建一个Turtle对象时,它的位置被设定在(0,0)处——窗口的中心,而且它的方向被设置为向右。Turtle模块用笔来绘制图形。默认情况下,笔是向下的(就像真实的笔尖触碰着一张纸)。如果笔是向下的,那么当移动Turtle的时候,它就会绘制出一条从当前位置到新位置的线。

今天我们要画的是一个可以获取当前时间的钟表

具体实现

因为钟表轮廓中是有几个小黑点的,那么我们首先需要设置画笔的动作,抬起画笔向前一段距离以后再放下

1defSkip(step):

2turtle.penup()

3turtle.forward(step)

4turtle.pendown()

注册Turtle的形状,建立一个表针Turtle,同时记录多边形起点和终点。(当前的乌龟位置是多边形的第一个顶点,多边形的最后一个顶点将与第一个顶点相连)返回最后记录的多边形。

1defmkHand(name, length):

2turtle.reset()

3Skip(-length *0.1)

4turtle.begin_poly()

5turtle.forward(length *1.1)

6turtle.end_poly()

7handForm = turtle.get_poly()

8turtle.register_shape(name, handForm)

因为钟表有三个指针,现在需要建立三个表针Turtle并初始化,同时还需要建立一个输出文字的Turtle

1defInit():

2globalsecHand, minHand, hurHand, printer

3turtle.mode("logo")

4mkHand("secHand",135)

5mkHand("minHand",125)

6mkHand("hurHand",90)

7secHand = turtle.Turtle()

8secHand.shape("secHand")

9minHand = turtle.Turtle()

10minHand.shape("minHand")

11hurHand = turtle.Turtle()

12hurHand.shape("hurHand")

13

14forhandinsecHand, minHand, hurHand:

15hand.shapesize(1,1,3)

16hand.speed(10)

17

18

19printer = turtle.Turtle()

20printer.hideturtle()

21printer.penup()

现在需要定义时间格式

1defWeek(t):

2week = ["星期一","星期二","星期三",

3"星期四","星期五","星期六","星期日"]

4returnweek[t.weekday()]

5

6

7defDate(t):

8y = t.year

9m = t.month

10d = t.day

11return"%s %d%d"% (y, m, d)

绘制指针的动态显示

1defTick():

2

3t = datetime.today()

4second = t.second + t.microsecond *0.000001

5minute = t.minute + second /60.0

6hour = t.hour + minute /60.0

7secHand.setheading(6* second)

8minHand.setheading(6* minute)

9hurHand.setheading(30* hour)

10

11turtle.tracer(False)

12printer.forward(65)

13printer.write(Week(t), align="center",

14font=("Courier",14,"bold"))

15printer.back(130)

16printer.write(Date(t), align="center",

17font=("Courier",14,"bold"))

18printer.home()

19turtle.tracer(True)

20

21# 100ms后继续调用tick

22turtle.ontimer(Tick,100)

现在是重头戏了,绘制钟表的轮廓,这的主要逻辑就是一个循环,不难于理解。

1defSetupClock(radius):

2turtle.reset()

3turtle.pensize(7)

4foriinrange(60):

5Skip(radius)

6ifi %5==0:

7turtle.forward(20)

8Skip(-radius -20)

9

10Skip(radius +20)

11ifi ==0:

12turtle.write(int(12), align="center", font=("Courier",14,"bold"))

13elifi ==30:

14Skip(25)

15turtle.write(int(i /5), align="center", font=("Courier",14,"bold"))

16Skip(-25)

17elif(i ==25ori ==35):

18Skip(20)

19turtle.write(int(i /5), align="center", font=("Courier",14,"bold"))

20Skip(-20)

21else:

22turtle.write(int(i /5), align="center", font=("Courier",14,"bold"))

23Skip(-radius -20)

24else:

25turtle.dot(5)

26Skip(-radius)

27turtle.right(6)

写在最后

学习就是举一反三,希望你可以用turtle画出更有意思的东西来。

钟表的完整代码需要后台回复【钟表】获取

Python的爱好者社区历史文章大合集

2018年Python爱好者社区历史文章合集(作者篇)

福利:文末扫码关注公众号,“Python爱好者社区”,开始学习Python课程:

关注后在公众号内回复“ 课程 ”即可获取:

小编的转行入职数据科学(数据分析挖掘/机器学习方向)【最新免费】

小编的Python的入门免费视频课程

小编的Python的快速上手matplotlib可视化库!

崔老师爬虫实战案例免费学习视频。

陈老师数据分析报告扩展制作免费学习视频。

玩转大数据分析!Spark2.X + Python精华实战课程免费学习视频。

除了画佩奇我们还要玩点更高级的相关推荐

  1. Avast 2017发布安全新功能:杀毒更高效,玩游戏更畅快

    本文讲的是Avast 2017发布安全新功能:杀毒更高效,玩游戏更畅快, 对于装有杀毒软件的游戏玩家来说,最痛苦的事情莫过于游戏打的正火热,忽然杀毒软件提醒你各种注意事项(各种安全对话框.气泡提示和扫 ...

  2. 世界杯+竞猜php,2018世界杯:分享微信游戏—玩竞猜更精彩

    原标题:2018世界杯:分享微信游戏-玩竞猜更精彩 2018年世界杯,又是一场有情怀的世界级赛事,曾经聚在学校食堂看世界杯,曾经在顶着黑眼圈爱世界杯,曾经为了争小贝更帅而面红耳赤...2018年的世界 ...

  3. 用Python画佩奇完整版

    用Python画佩奇完整版 文章完全是依照这篇博客写的 啥是佩奇,Python 告诉你! 想把这篇博客完善一下,大致没有多大变化,从本质来说就加个身体的函数,由于本人水平有限,编译的代码有点繁琐,希望 ...

  4. 计算机电源怎么设置玩游戏不卡,amd显卡怎么设置玩游戏更流畅

    Q2:AMD显卡如何设置玩游戏更流畅? 右上角的设置成简单模式,将显卡拉去左边,直接高性能. 拓展: 1.显卡(Video card,Graphics card)全称显示接口卡,又称显示适配器,是计算 ...

  5. 5k还要玩游戏?那就让他和游戏过吧!

    五天.每天工作八小时,还要早起.再加上通勤时间,下班回家后大家肯定很疲惫了.大家喜欢做什么事消遣娱乐一下呢?追剧.刷爱豆.买买买?或者是玩游戏? 大家应该或多或少都玩过游戏吧?如果你从来不玩游戏,一定 ...

  6. DDGScreenShot —iOS 图片裁剪,切圆角,加边框,你还用cornerRadius,还有更高级的方法...

    写在前面 我们肯定做过这样的需求,给一个图片切圆角, 当然我们大多采用简单粗暴的方法 myIcon.layer.cornerRadius = 16.5 myIcon.layer.masksToBoun ...

  7. DDGScreenShot--iOS 图片裁剪,切圆角,加边框,你还用cornerRadius,还有更高级的用法...

    写在前面 所有功能演示 我们肯定做过这样的需求,给一个图片切圆角, 当然我们大多采用简单粗暴的方法 myIcon.layer.cornerRadius = 16.5 myIcon.layer.mask ...

  8. FlameScope 更高级全面的火焰图

    FlameScope 更高级全面的火焰图 文章目录 FlameScope 更高级全面的火焰图 安装步骤 安装问题fix 使用方式 网飞(Netflix)开发的火焰图工具能够更好得呈现出一段时间内的服务 ...

  9. 在 Snoop 中使用 PowerShell 脚本进行更高级的 UI 调试

    在 Snoop 中使用 PowerShell 脚本进行更高级的 UI 调试 原文:在 Snoop 中使用 PowerShell 脚本进行更高级的 UI 调试 版权声明:本作品采用知识共享署名-非商业性 ...

最新文章

  1. python @修饰符作用
  2. Android之解决在非Activity中使用startActivity
  3. 计算机网络是将地理知识,计算机网络的基础知识精选.ppt
  4. OpenStack SFC 深入剖析
  5. 【2018百度之星资格赛】1002 子串查询
  6. 旋转矩阵与四元数的理解
  7. 行动是最好的告白,钟意社科院杜兰金融管理硕士项目的你不要错过机会
  8. Markov链:初始概率、绝对概率
  9. 地铁+单车一体化智慧接驳,哈罗单车升级为哈啰出行
  10. javaweb复习笔记总结
  11. 项目管理经典案例收集1
  12. 计算机组成原理第二版第5章答案,计算机组成原理第5章习题参考答案.pdf
  13. gstreamer element创建
  14. [sicily]部分题目分类
  15. 植树节,送 25 本书福利一下
  16. SQL注入一些过滤及绕过总结
  17. PAT B1069 微博转发抽奖(测试点3)
  18. 北京地铁运营线路图 1号线 2号线 5号线 8号线 10号线 13号线 八通线和机场快轨
  19. 图像分类CNN经典网络(一)AlexNet与VGG
  20. Riak的一个PHP扩展

热门文章

  1. GDSOI2019退役记
  2. BSV 网络上公平的掷硬币游戏
  3. 可以安装linux的u盘启动工具箱,自己动手定制winpe +各种dos工具箱U盘启动盘+ minilinux...
  4. 闲鱼架构专家,详解Flutter技术架构15页ppt:跨端方案如何选择?
  5. 智力扣(4)——其他扣
  6. CSS 实现按钮点击动效的套路
  7. zxing生成二维码去白边
  8. 基于差分均值扰动的改进粒子群优化算法(DMP-PSO)
  9. VMware ESXI 7服务器中安装虚拟机(全过程超详细含中英文对照,附应知必会的理论基础和常见故障解决方案)
  10. html中text默认值,text-align 的默认值是 left