【用python的标准库画出显示实时时间的数码管】

简介: 【用python的标准库画出显示实时时间的数码管】

要想绘制可以显示时间的数码管肯定要用到turtle和time两个标准库。

import turtle as t
import time

码管由七段构成,要想画出一个数码管,就要先从它的一段画起,然后按照顺序画完七段,如图所示:

首先需要定义一个画一段的函数,我们需要一点点的距离,所以还需要一个产生距离的函数。

def drawgap():
    t.penup()
    t.fd(5)
def drawline(draw):
    drawgap()
    t.pendown() if draw else t.penup()
    t.fd(40)
    drawgap()
    t.right(90)

义完画一段的函数,就需要画整个数字了,0-9的数码管显示会有的部分不显示,有的部分显示,所以我们需要定义一个判断函数,来判断一个数字哪几段需要画出来。

def drawdight(dight):
    drawline(True) if dight in [2,3,4,5,6,8,9] else drawline(False)
    drawline(True) if dight in [0,1,3,4,5,6,7,8,9] else drawline(False)
    drawline(True) if dight in [0,2,3,5,6,8,9] else drawline(False)
    drawline(True) if dight in [0,2,6,8] else drawline(False)
    t.left(90)
    drawline(True) if dight in [0,4,5,6,8,9] else drawline(False)
    drawline(True) if dight in [0,2,3,5,6,7,8,9] else drawline(False)
    drawline(True) if dight in [0,1,2,3,4,7,8,9] else drawline(False)
    t.left(180)
    t.penup()
    t.fd(20)

一个数字画完了,然而日期和时间的显示需要很多数字组合显示,所以需要一个画出日期的函数(内部的判断和循环需要遵照time库的时间显示方式)

def drawdate(date):
    for i in date:
        if i == '-':
            t.write('年',font=('宋体',18,'normal'))
            t.pencolor('green')
            t.fd(40)
        elif i == '+':
            t.write('月',font=('宋体',18,'normal'))
            t.pencolor('purple')
            t.fd(40)
        elif i == '=':
            t.write('日',font=('宋体',18,'normal'))
            t.pencolor('blue')
            t.fd(40)
        elif i == '*':
            t.write('时',font=('宋体',18,'normal'))
            t.pencolor('gold')
            t.fd(40)
        elif i == '#':
            t.write('分',font=('宋体',18,'normal'))
            t.pencolor('brown')
            t.fd(40)
        elif i == '&':
            t.write('秒',font=('宋体',18,'normal'))
            t.pencolor('coral')
            t.fd(40)
        else:
            drawdight(eval(i))

最后获取时间,设置窗体,调用函数

def main():
    t.setup(1600,400)
    t.pencolor('red')
    t.width(10)
    t.speed(5)
    t.penup()
    t.fd(-600)
    drawdate(time.strftime('%Y-%m+%d=%H*%M#%S&',time.localtime()))
    t.done()
main()

效果如下:

相关文章
|
1月前
|
存储 人工智能 测试技术
如何使用LangChain的Python库结合DeepSeek进行多轮次对话?
本文介绍如何使用LangChain结合DeepSeek实现多轮对话,测开人员可借此自动生成测试用例,提升自动化测试效率。
292 125
如何使用LangChain的Python库结合DeepSeek进行多轮次对话?
|
1月前
|
监控 数据可视化 数据挖掘
Python Rich库使用指南:打造更美观的命令行应用
Rich库是Python的终端美化利器,支持彩色文本、智能表格、动态进度条和语法高亮,大幅提升命令行应用的可视化效果与用户体验。
108 0
|
6月前
|
JavaScript 前端开发 Java
通义灵码 Rules 库合集来了,覆盖Java、TypeScript、Python、Go、JavaScript 等
通义灵码新上的外挂 Project Rules 获得了开发者的一致好评:最小成本适配我的开发风格、相当把团队经验沉淀下来,是个很好功能……
1219 103
|
3月前
|
存储 Web App开发 前端开发
Python + Requests库爬取动态Ajax分页数据
Python + Requests库爬取动态Ajax分页数据
|
12天前
|
数据可视化 关系型数据库 MySQL
【可视化大屏】全流程讲解用python的pyecharts库实现拖拽可视化大屏的背后原理,简单粗暴!
本文详解基于Python的电影TOP250数据可视化大屏开发全流程,涵盖爬虫、数据存储、分析及可视化。使用requests+BeautifulSoup爬取数据,pandas存入MySQL,pyecharts实现柱状图、饼图、词云图、散点图等多种图表,并通过Page组件拖拽布局组合成大屏,支持多种主题切换,附完整源码与视频讲解。
94 4
【可视化大屏】全流程讲解用python的pyecharts库实现拖拽可视化大屏的背后原理,简单粗暴!
|
21天前
|
传感器 运维 前端开发
Python离群值检测实战:使用distfit库实现基于分布拟合的异常检测
本文解析异常(anomaly)与新颖性(novelty)检测的本质差异,结合distfit库演示基于概率密度拟合的单变量无监督异常检测方法,涵盖全局、上下文与集体离群值识别,助力构建高可解释性模型。
214 10
Python离群值检测实战:使用distfit库实现基于分布拟合的异常检测
|
2月前
|
运维 Linux 开发者
Linux系统中使用Python的ping3库进行网络连通性测试
以上步骤展示了如何利用 Python 的 `ping3` 库来检测网络连通性,并且提供了基本错误处理方法以确保程序能够优雅地处理各种意外情形。通过简洁明快、易读易懂、实操性强等特点使得该方法非常适合开发者或系统管理员快速集成至自动化工具链之内进行日常运维任务之需求满足。
155 18
|
3月前
|
JSON 网络安全 数据格式
Python网络请求库requests使用详述
总结来说,`requests`库非常适用于需要快速、简易、可靠进行HTTP请求的应用场景,它的简洁性让开发者避免繁琐的网络代码而专注于交互逻辑本身。通过上述方式,你可以利用 `requests`处理大部分常见的HTTP请求需求。
342 51
|
2月前
|
机器学习/深度学习 API 异构计算
JAX快速上手:从NumPy到GPU加速的Python高性能计算库入门教程
JAX是Google开发的高性能数值计算库,旨在解决NumPy在现代计算需求下的局限性。它不仅兼容NumPy的API,还引入了自动微分、GPU/TPU加速和即时编译(JIT)等关键功能,显著提升了计算效率。JAX适用于机器学习、科学模拟等需要大规模计算和梯度优化的场景,为Python在高性能计算领域开辟了新路径。
229 0
JAX快速上手:从NumPy到GPU加速的Python高性能计算库入门教程
|
2月前
|
数据采集 存储 Web App开发
Python爬虫库性能与选型实战指南:从需求到落地的全链路解析
本文深入解析Python爬虫库的性能与选型策略,涵盖需求分析、技术评估与实战案例,助你构建高效稳定的数据采集系统。
286 0

推荐镜像

更多