除了画佩奇我们还要玩点更高级的
欢迎关注天善智能,我们是专注于商业智能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精华实战课程免费学习视频。
除了画佩奇我们还要玩点更高级的相关推荐
- Avast 2017发布安全新功能:杀毒更高效,玩游戏更畅快
本文讲的是Avast 2017发布安全新功能:杀毒更高效,玩游戏更畅快, 对于装有杀毒软件的游戏玩家来说,最痛苦的事情莫过于游戏打的正火热,忽然杀毒软件提醒你各种注意事项(各种安全对话框.气泡提示和扫 ...
- 世界杯+竞猜php,2018世界杯:分享微信游戏—玩竞猜更精彩
原标题:2018世界杯:分享微信游戏-玩竞猜更精彩 2018年世界杯,又是一场有情怀的世界级赛事,曾经聚在学校食堂看世界杯,曾经在顶着黑眼圈爱世界杯,曾经为了争小贝更帅而面红耳赤...2018年的世界 ...
- 用Python画佩奇完整版
用Python画佩奇完整版 文章完全是依照这篇博客写的 啥是佩奇,Python 告诉你! 想把这篇博客完善一下,大致没有多大变化,从本质来说就加个身体的函数,由于本人水平有限,编译的代码有点繁琐,希望 ...
- 计算机电源怎么设置玩游戏不卡,amd显卡怎么设置玩游戏更流畅
Q2:AMD显卡如何设置玩游戏更流畅? 右上角的设置成简单模式,将显卡拉去左边,直接高性能. 拓展: 1.显卡(Video card,Graphics card)全称显示接口卡,又称显示适配器,是计算 ...
- 5k还要玩游戏?那就让他和游戏过吧!
五天.每天工作八小时,还要早起.再加上通勤时间,下班回家后大家肯定很疲惫了.大家喜欢做什么事消遣娱乐一下呢?追剧.刷爱豆.买买买?或者是玩游戏? 大家应该或多或少都玩过游戏吧?如果你从来不玩游戏,一定 ...
- DDGScreenShot —iOS 图片裁剪,切圆角,加边框,你还用cornerRadius,还有更高级的方法...
写在前面 我们肯定做过这样的需求,给一个图片切圆角, 当然我们大多采用简单粗暴的方法 myIcon.layer.cornerRadius = 16.5 myIcon.layer.masksToBoun ...
- DDGScreenShot--iOS 图片裁剪,切圆角,加边框,你还用cornerRadius,还有更高级的用法...
写在前面 所有功能演示 我们肯定做过这样的需求,给一个图片切圆角, 当然我们大多采用简单粗暴的方法 myIcon.layer.cornerRadius = 16.5 myIcon.layer.mask ...
- FlameScope 更高级全面的火焰图
FlameScope 更高级全面的火焰图 文章目录 FlameScope 更高级全面的火焰图 安装步骤 安装问题fix 使用方式 网飞(Netflix)开发的火焰图工具能够更好得呈现出一段时间内的服务 ...
- 在 Snoop 中使用 PowerShell 脚本进行更高级的 UI 调试
在 Snoop 中使用 PowerShell 脚本进行更高级的 UI 调试 原文:在 Snoop 中使用 PowerShell 脚本进行更高级的 UI 调试 版权声明:本作品采用知识共享署名-非商业性 ...
最新文章
- python @修饰符作用
- Android之解决在非Activity中使用startActivity
- 计算机网络是将地理知识,计算机网络的基础知识精选.ppt
- OpenStack SFC 深入剖析
- 【2018百度之星资格赛】1002 子串查询
- 旋转矩阵与四元数的理解
- 行动是最好的告白,钟意社科院杜兰金融管理硕士项目的你不要错过机会
- Markov链:初始概率、绝对概率
- 地铁+单车一体化智慧接驳,哈罗单车升级为哈啰出行
- javaweb复习笔记总结
- 项目管理经典案例收集1
- 计算机组成原理第二版第5章答案,计算机组成原理第5章习题参考答案.pdf
- gstreamer element创建
- [sicily]部分题目分类
- 植树节,送 25 本书福利一下
- SQL注入一些过滤及绕过总结
- PAT B1069 微博转发抽奖(测试点3)
- 北京地铁运营线路图 1号线 2号线 5号线 8号线 10号线 13号线 八通线和机场快轨
- 图像分类CNN经典网络(一)AlexNet与VGG
- Riak的一个PHP扩展
热门文章
- GDSOI2019退役记
- BSV 网络上公平的掷硬币游戏
- 可以安装linux的u盘启动工具箱,自己动手定制winpe +各种dos工具箱U盘启动盘+ minilinux...
- 闲鱼架构专家,详解Flutter技术架构15页ppt:跨端方案如何选择?
- 智力扣(4)——其他扣
- CSS 实现按钮点击动效的套路
- zxing生成二维码去白边
- 基于差分均值扰动的改进粒子群优化算法(DMP-PSO)
- VMware ESXI 7服务器中安装虚拟机(全过程超详细含中英文对照,附应知必会的理论基础和常见故障解决方案)
- html中text默认值,text-align 的默认值是 left