最近迷上了Python,要说为什么呢?Python语法简单,功能强大,有广泛的第三方库能快速编程实现自己的想法(无需重复去造轮子)。就像某位前辈说的:“人生苦短,学会偷懒…”,配置好sublime text照着网上教程直接上手写个小程序入门。

先插张图,计算机技术的演进过程,总结的还是挺到位的。

安装好Python环境,引入需要用到的库:

import threading
import turtle
import time

引入time库后使用localtime()方法可以获取当前服务器时间,然后使用turtle库绘制7段数码管时钟。

now = time.localtime()  # 返回服务器时间print(now)
print(time.strftime("%Y-%m-%d %H:%M:%S", now))# 转成字符串
# %y 两位数的年份表示(00-99)
# %Y 四位数的年份表示(000-9999)
# %m 月份(01-12)
# %d 月内中的一天(0-31)
# %H 24小时制小时数(0-23)
# %I 12小时制小时数(01-12)
# %M 分钟数(00=59)
# %S 秒(00-59)
# %a 本地简化星期名称
# %A 本地完整星期名称
# %b 本地简化的月份名称
# %B 本地完整的月份名称
# %c 本地相应的日期表示和时间表示
# %j 年内的一天(001-366)
# %p 本地A.M.或P.M.的等价符
# %U 一年中的星期数(00-53)星期天为星期的开始
# %w 星期(0-6),星期天为星期的开始
# %W 一年中的星期数(00-53)星期一为星期的开始
# %x 本地相应的日期表示
# %X 本地相应的时间表示
# %Z 当前时区的名称
# %% %号本身

绘制数码管函数:

# 绘制单根数码管
def drawLine(draw):turtle.pensize(3)turtle.puturtle.fd(3)if draw:turtle.pd()else:turtle.pu()turtle.fd(24)turtle.pu()turtle.fd(3)turtle.right(90)# 根据数字绘制数码管
def drawNum(num, color):turtle.colormode(255)turtle.color(eval(color))# 第一条线if num in [2, 3, 4, 5, 6, 8, 9]:drawLine(True)else:drawLine(False)if num in [0, 1, 3, 4, 5, 6, 7, 8, 9]:drawLine(True)else:drawLine(False)if num in [0, 2, 3, 5, 6, 8, 9]:drawLine(True)else:drawLine(False)if num in [0, 2, 6, 8]:drawLine(True)else:drawLine(False)turtle.left(90)if num in [0, 4, 5, 6, 8, 9]:drawLine(True)else:drawLine(False)if num in [0, 2, 3, 5, 6, 7, 8, 9]:drawLine(True)else:drawLine(False)if num in [0, 1, 2, 3, 4, 7, 8, 9]:drawLine(True)else:drawLine(False)turtle.pu()turtle.left(180)turtle.fd(30)  # 绘制后面数字间隔位置turtle.update()

一个7段数码管全部绘制(显示数字8)顺序如下,根据显示的数字来决定哪些需要绘制,哪些只是抬起画笔移动不进行绘制,所以绘制单段数码管的函数内设置了一个参数draw。

定义一个Tick函数,利用threading库实现定时刷新:

def Tick():now = time.localtime()now_time.n_sec = now.tm_secturtle.reset()turtle.hideturtle()turtle.pu()turtle.fd(-300)darwDate(str(now.tm_year), '(255, 69, 0)')turtle.fd(10)turtle.right(90)turtle.fd(30)turtle.write('年', align="center", font=("Courier", 30, "bold"))turtle.left(180)turtle.fd(30)turtle.right(90)turtle.fd(30)darwDate(str(now.tm_mon), '(0,139,0)')turtle.fd(10)turtle.right(90)turtle.fd(30)turtle.write('月', align="center", font=("Courier", 30, "bold"))turtle.left(180)turtle.fd(30)turtle.right(90)turtle.fd(30)darwDate(str(now.tm_mday), '(0,0,139)')turtle.fd(10)turtle.right(90)turtle.fd(30)turtle.write('日', align="center", font=("Courier", 30, "bold"))turtle.left(180)turtle.fd(-90)turtle.right(90)turtle.fd(-510)darwDate(str(now.tm_hour))turtle.fd(10)turtle.right(90)turtle.fd(30)turtle.write('时', align="center", font=("Courier", 30, "bold"))turtle.left(180)turtle.fd(30)turtle.right(90)turtle.fd(30)darwDate(str(now.tm_min))turtle.fd(10)turtle.right(90)turtle.fd(30)turtle.write('分', align="center", font=("Courier", 30, "bold"))turtle.left(180)turtle.fd(30)turtle.right(90)turtle.fd(30)darwDate(str(now.tm_sec))turtle.fd(10)turtle.right(90)turtle.fd(30)turtle.write('秒', align="center", font=("Courier", 30, "bold"))turtle.left(180)turtle.fd(30)turtle.right(90)turtle.fd(30)timer = threading.Timer(0.1, Tick)  # 利用多线程库定时刷新timer.start()

最后定义一个入口函数:

def mian():turtle.hideturtle()  # 隐藏画笔turtle.speed(0)  # 最快turtle.tracer(0)turtle.pu()turtle.fd(-300)Tick()turtle.done()
# Python turtle模块的海龟作图,由于需要展示海龟运动的过程,缺省状态下,对作图进行了延迟处理,
# 致使复杂图形的绘制速度过慢,可以用如下方法取消延迟,加速绘图:
# 在绘图之前调用tracer
# turtle.tracer(0)
# 在绘图结束时调用update
# turtle.update()mian()

最终效果:

代码写好后,可以打包成一个可执行文件,这里需要用到第三方库PyInstaller;安装第三方库Python封装了包管理工具pip确保安装时勾选了pip和Add python.exe to Path)。这里我用在线安装的方式,在cmd窗口直接运行:pip install 包名,如 pip install pyInstaller,注意:这种方式安装时会自动下载第三方库,安装完成后并不会删除,如需删除请到它的默认下载路径下手动删除。(win7的默认路径://AppData可能是隐藏文件夹 c:\用户\(你的用户名)\AppData\Local\pip\cache\ linux的默认路径: ~/.cache/pip)

耐心等待下载并安装后,就可以使用PyInstaller了,在需要打包的文件目录下运行pyinstaller -F指令:

打包后生成独立执行文件time.exe:

打包时还可以通过–icon指令设置指定的图标,还有更多指令等以后用到的时候再研究。用了一段时间的Python,因为语法简洁所以代码的缩进很重要,这也算是一个小坑吧,不过熟能生巧,还需多多练习。

Python入门——实现简易数码时钟相关推荐

  1. js实现简易数码时钟

    数码时钟即通过图片数字来显示当前时间: 效果图: HTML基础样式: 1 <body> 2 <div id="hour1"></div> 3 & ...

  2. python数码时钟代码_python实现简易数码时钟

    最近迷上了Python,要说为什么呢?Python语法简单,功能强大,有广泛的第三方库能快速编程实现自己的想法(无需重复去造轮子).就像某位前辈说的:"人生苦短,学会偷懒-",配置 ...

  3. Python canvas:简易圆盘时钟,圆盘

    时钟?用Python?你可能会说,实在是太简单了吧,谁不会? >>> 不,今天,我们要做的是圆盘时钟! 下载模块 使用pip下载所需模块: pip install tkinter 一 ...

  4. Python入门习题9.数码管时间

    1 #七段数码管.py 2 import turtle,datetime 3 def drawGap(): #绘制数码管间隔 4 turtle.penup() 5 turtle.fd(5) 6 def ...

  5. js定时器与数码时钟案例(源码及备注)

    js定时器与数码时钟案例 开启定时器 1.setInterval 间隔型 setInterval(参数一,参数二); 第一个参数是一个函数,第二个参数是时间(单位是毫秒) 意思就是每隔多长时间执行一次 ...

  6. python动态时钟代码_python实现简易动态时钟

    本文实例为大家分享了python实现简易动态时钟的具体代码,供大家参考,具体内容如下 from turtle import * from datetime import * #移动到指定位置 def ...

  7. 用python动态时钟代码_python实现简易动态时钟

    本文实例为大家分享了python实现简易动态时钟的具体代码,供大家参考,具体内容如下 from turtle import * from datetime import * #移动到指定位置 def ...

  8. Python与人工智能入门实践——简易人脸识别系统

    Python与人工智能入门实践--简易人脸识别系统 写在前面: 笔者在寒假期间进行了一些简短的实训,主要内容包括简单的爬虫和简单的人脸识别算法,由于时间有限,对于python也是第一次详细学习,功能较 ...

  9. [SugerTangYL] 简易电子时钟Verilog设计

    目录 前言 一.简易电子时钟的功能要求 二.设计思路&整体框架 三.完整代码 四.仿真 总结 前言 来分享第一个案例了!简易电子时钟的Verilog设计,电子时钟应该算是走嵌入式和FPGA开发 ...

最新文章

  1. java怎么定义字符长度_java – 当字符串长度超过列长度定义时,如何以静默方式截断字符串?...
  2. jquery的$.extent()方法的总结
  3. java mongodb排序查询_java操作mongodb基础(查询 排序 输出list)
  4. php获取谷歌地图api接口,谷歌地图 API 开发之信息窗口
  5. Python IDLE(shell清屏配置方法)
  6. Hadoop HDFS (3) JAVA訪问HDFS之二 文件分布式读写策略
  7. java获取远程网络图片文件流、压缩保存到本地
  8. C++高质量编程点滴
  9. java 快速io_java 最快的input (ACM) Java高效IO
  10. Hibernate 中出现 xxx表 is not mapped xxx的问题
  11. MFCC/Filter Bank的提取流程
  12. exchange无法收发邮件_MAPI session超过Exchange最大限制,邮件发送失败的终极解决方法...
  13. 亚嵌协办 博文视点Open Party第5期 参会感言
  14. 会员充值-》解决方案之一
  15. 不用代码隐藏自定义列表
  16. 工业控制系统的体系架构
  17. word打开wps文件乱码_金山wps2007打开word2007文件为什么是乱码
  18. [BZOJ3161]孤舟蓑笠翁
  19. Oracle存储过程实现X日均线计算
  20. 怎么判断日出时间早晚_日出日落时间早晚比较

热门文章

  1. Windows 8.1笔记本电源已接通未充电怎么办?
  2. 注意力机制——Coordinate Attention
  3. linux服务器有电信和网通,linux双线路双ip,设置电信和网通走不同的路由。
  4. 手机射频测试总结(三)——发射功率及发射频率(基础篇)
  5. SpringBoot+Layui开发电商商品SKU管理系统
  6. Ubuntu服务器迁移WordPress
  7. 网络流量控制技术简介
  8. python语言if either怎么用_闲话Python之条件语句IF
  9. 我爱专业计算机着征文,我爱计算机作文
  10. JavaScript - 唤醒 app store 跳转到苹果商店内下载指定应用页面 安卓跳转默认浏览器应用页面