python实现简易数码时钟


Posted in Python onFebruary 19, 2021

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

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

python实现简易数码时钟

安装好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 当前时区的名称
# %% %号本身

python实现简易数码时钟

绘制数码管函数:

# 绘制单根数码管
def drawLine(draw):
 turtle.pensize(3)
 turtle.pu
 turtle.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。

python实现简易数码时钟

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

def Tick():
 now = time.localtime()
 now_time.n_sec = now.tm_sec
 turtle.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()

最终效果:

python实现简易数码时钟

代码写好后,可以打包成一个可执行文件,这里需要用到第三方库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指令:

python实现简易数码时钟

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

python实现简易数码时钟

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

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持三水点靠木。

Python 相关文章推荐
基于python实现微信模板消息
Dec 21 Python
matplotlib绘制符合论文要求的图片实例(必看篇)
Jun 02 Python
利用Python循环(包括while&for)各种打印九九乘法表的实例
Nov 06 Python
python 将print输出的内容保存到txt文件中
Jul 17 Python
解决tensorflow1.x版本加载saver.restore目录报错的问题
Jul 26 Python
Python实现根据日期获取当天凌晨时间戳的方法示例
Apr 09 Python
Python3.5集合及其常见运算实例详解
May 01 Python
python使用pip安装模块出现ReadTimeoutError: HTTPSConnectionPool的解决方法
Oct 04 Python
python GUI库图形界面开发之PyQt5滑块条控件QSlider详细使用方法与实例
Feb 28 Python
解决Pytorch自定义层出现多Variable共享内存错误问题
Jun 28 Python
Python+Selenium实现读取网易邮箱验证码
Mar 13 Python
python实现对doc、txt、xls等文档的读写操作
Apr 02 Python
python爬取淘宝商品销量信息
Nov 16 #Python
python爬取网易云音乐评论
Nov 16 #Python
python实现将汉字保存成文本的方法
Nov 16 #Python
python 字符串只保留汉字的方法
Nov 16 #Python
Python 创建新文件时避免覆盖已有的同名文件的解决方法
Nov 16 #Python
用python标准库difflib比较两份文件的异同详解
Nov 16 #Python
在Pandas中给多层索引降级的方法
Nov 16 #Python
You might like
PHP网站提速三大“软”招
2006/10/09 PHP
php入门小知识
2008/03/24 PHP
通过dbi使用perl连接mysql数据库的方法
2014/04/16 PHP
PHP简单选择排序算法实例
2015/01/26 PHP
[原创]PHP实现字节数Byte转换为KB、MB、GB、TB的方法
2017/08/31 PHP
php学习笔记之字符串常见操作总结
2019/07/16 PHP
IE中jscript/javascript的条件编译
2006/09/07 Javascript
js带按钮的提示框可供选择示例代码
2013/09/17 Javascript
Angularjs 基础入门
2014/12/26 Javascript
JS制作简单的三级联动
2015/03/18 Javascript
jQuery EasyUI datagrid在翻页以后仍能记录被选中行的实现代码
2016/08/15 Javascript
使用JSON作为函数的参数的优缺点
2016/10/27 Javascript
解决node修改后需频繁手动重启的问题
2018/05/13 Javascript
Elasticsearch实现复合查询高亮结果功能
2019/09/10 Javascript
基于Angular 8和Bootstrap 4实现动态主题切换的示例代码
2020/02/11 Javascript
vue 导航菜单刷新状态不消失,显示对应的路由界面操作
2020/08/06 Javascript
vue 动态添加的路由页面刷新时失效的原因及解决方案
2021/02/26 Vue.js
更改Python命令行交互提示符的方法
2015/01/14 Python
Python设计模式之中介模式简单示例
2018/01/09 Python
Python logging管理不同级别log打印和存储实例
2018/01/19 Python
Django admin.py 在修改/添加表单界面显示额外字段的方法
2019/08/22 Python
python使用ctypes调用扩展模块的实例方法
2020/01/28 Python
使用celery和Django处理异步任务的流程分析
2020/02/19 Python
详解用Pytest+Allure生成漂亮的HTML图形化测试报告
2020/03/31 Python
opencv+pyQt5实现图片阈值编辑器/寻色块阈值利器
2020/11/13 Python
html5 Canvas绘制线条 closePath()实例代码
2012/05/10 HTML / CSS
技术总监岗位职责
2013/12/05 职场文书
圣诞节红领巾广播稿
2014/02/03 职场文书
模具专业毕业生自荐书范文
2014/02/19 职场文书
犯错检讨书
2014/02/21 职场文书
关于环保的演讲稿
2014/05/10 职场文书
党课心得体会范文
2014/09/09 职场文书
幼儿教师自我剖析材料
2014/09/29 职场文书
Python入门之使用pandas分析excel数据
2021/05/12 Python
OpenCV-Python实现轮廓拟合
2021/06/08 Python
Vue操作Storage本地化存储
2022/04/29 Vue.js