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

news2024/11/14 13:30:26

在这里插入图片描述

🤵‍♂️ 个人主页@老虎也淘气 个人主页
✍🏻作者简介: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()

效果如下:
在这里插入图片描述
在这里插入图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/58327.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

Java项目:SSM电影售票管理系统

作者主页:源码空间站2022 简介:Java领域优质创作者、Java项目、学习资料、技术互助 文末获取源码 项目介绍 管理员角色包含以下功能: 管理员登陆,管理员用户管理,新闻公告增删改查,电影类型增删改查,影院信息增删改查,电影信息增删改查,订单…

计算机网络学习笔记(II)——应用层

文章目录第二章—应用层2.1、应用层原理网络应用的体系结构客服—服务器(C/S)体系结构对等体(P2P)体系结构C/S和P2P体系的混合结构进程通信分布式进程通信需要解决的问题应用层协议Internet传输层提供的服务UDP存在的必要性2.2、W…

【Android插件化框架】插件APK中的动态代理

在 Android 中实现插件化框架,需要解决的问题主要如下: 资源和代码的加载Android 生命周期的管理和组件的注册宿主 APK 和插件 APK 资源引用的冲突解决 下面分析几个目前主流的开源框架 DL 动态加载框架 ( 2014 年底) 是基于代理的方式实现插件框架&…

渗透测试 | APP信息收集

0x00 免责声明 本文仅限于学习讨论与技术知识的分享,不得违反当地国家的法律法规。对于传播、利用文章中提供的信息而造成的任何直接或者间接的后果及损失,均由使用者本人负责,本文作者不为此承担任何责任,一旦造成后果请自行承担…

【学习笔记76】认识ajax和ajax的请求

一、认识前后端交互 1、前后端交互 前端向后端发送请求, 索要数据因为前端没有办法存储大量数据, 所以数据都存储在后端当前端需要数据时, 需要向后端发送请求, 得到想要的数据 2、什么是ajax ajax全名async javascript and XML(异步JavaScript和XML)是前后台交互的能⼒&#…

手摸手带你撸一个拖拽效果

目录 前言 准备 创建所需要结构 编写样式 js编写拖拽效果 解释方法 所有代码 结尾 前言 最近看见一个拖拽效果的视频,看好多人评论说跟着敲也没效果,还有就是作者也不回复大家提出的一些疑问,本着知其然必要知其所以然的心理&#xf…

【疯狂世界杯】css 动画实现跳动的足球

📋 个人简介 💖 作者简介:大家好,我是阿牛,全栈领域优质创作者😜📝 个人主页:馆主阿牛🔥🎉 支持我:点赞👍收藏⭐️留言📝…

python T检验

T检验通常分为三种:单样本T检验、双样本T检验、配对样本T检验原理可以参考:一文详解t检验本文主要介绍使用python实现T检验的过程,内容主要是参考这篇博文:利用python库stats进行t检验 文章目录一、单样本T检验二、独立样本t检验&…

二、Git本地仓库基本操作——创建Git仓库、提交更新或删除文件

1. 创建本地工作仓库 创建本地工作仓库有两种方法: git init 在本地初始化一个git仓库git clone 直接克隆一个远程的git仓库 方法一: 我们在其中一个目录下,点击鼠标右键,然后启动git bash。输入下面命令: git in…

【实战案例】Python 信用卡欺诈检测其实特简单

当我们在网上购买产品时,很多人喜欢使用信用卡。但信用卡欺诈常常会在身边发生,网络安全正成为我们生活中至关重要的一部分。 为了解决这个问题,我们需要利用机器学习算法构建一个异常行为的识别系统,如果发现可疑,中…

2023最新SSM计算机毕业设计选题大全(附源码+LW)之java高校饭堂管理系统8gmjo

这个选题的话其实有很多的,就看你自己能接受怎么样的,比如可以做网站类、系统类、小程序类、安卓app、大数据类等等,这个也要看你个人能力和技术问题,如果技术小白或者有一点点基础的话建议选择网站类和系统类的,如果有…

微服务框架 SpringCloud微服务架构 10 使用Docker 10.2 镜像命令练习

微服务框架 【SpringCloudRabbitMQDockerRedis搜索分布式,系统详解springcloud微服务技术栈课程|黑马程序员Java微服务】 SpringCloud微服务架构 文章目录微服务框架SpringCloud微服务架构10 使用Docker10.2 镜像命令练习10.2.1 练习10 使用Docker 10.2 镜像命令…

Spring boot 自动装配原理

Spring boot 为了解决Bean的复杂配置&#xff0c;引入了自动装配机制&#xff1b;那么什么是自动装配&#xff0c;它的原理又是什么呢&#xff1f;我们先通过以下例子来了解以一下什么是自动装配。 Spring boot 集成 redis 引入依赖包 <dependency><groupId>org…

CTFShow pwn07 (ret2libc-64bit

用ROPgabdet 找到pop rdi地址和ret地址&#xff1a; 来自ctfshow pwn7&#xff1a; 64位程序是需要栈平衡的&#xff0c;而且前六个寄存器用完了才会用栈传参 %rdi&#xff0c;%rsi&#xff0c;%rdx&#xff0c;%rcx&#xff0c;%r8&#xff0c;%r9 用作函数参数&#xff0c;依…

rust编程-rust所有权理解(chapter 4.1)

目录 1. 什么是所有权 1.1 堆与栈 1.2 变量作用域 1.3 String类型 1.4 内存和分配 1.5 变量和数据交互的方式 1.5 所有权和函数 1.6 返回值和作用域 所有权 是Rust独有的特性&#xff0c;该设计开创了编程语言中的先河。所有权使得Rust能保证内存的安全&#xff0c;且不…

游程编码(Run Length Coding)

游程编码游程编码基本介绍示例1示例2游程编码适用的场景游程编码 游程编码&#xff08;Run Length Coding&#xff0c;简称RLC&#xff09;又称游程编码、行程长度编码、变动长度编码 等&#xff0c;是一种统计编码。主要技术是检测重复的比特或字符序列&#xff0c;并用它们的…

亚马逊云科技re:Invent 2022 Ruba Borno主题演讲

2022亚马逊云科技re:Invent全球大会精彩内容应接不暇&#xff0c;亚马逊云科技全球渠道与联盟副总裁Ruba Borno在2022亚马逊云科技re:Invent大会的全球合作伙伴峰会上&#xff0c;为合作伙伴带来一系列全新的合作伙伴创新服务。 云上发展持续加速的当下&#xff0c;上云好比一场…

使用Fiddler对手机App抓包

目录 一、查看 Fiddler 的 ip 地址 二、设置 Fiddler 允许远程连接 三、进行手机端 App 的抓包 3.1.准备工作 3.2.手机设置 3.3.安装根证书 四、可能会遇到的问题 一、查看 Fiddler 的 ip 地址 有两种方法都可以查询到。 第一种方法&#xff1a; 打开 Fiddler&#xff…

[附源码]计算机毕业设计springboot在线招聘网站

项目运行 环境配置&#xff1a; Jdk1.8 Tomcat7.0 Mysql HBuilderX&#xff08;Webstorm也行&#xff09; Eclispe&#xff08;IntelliJ IDEA,Eclispe,MyEclispe,Sts都支持&#xff09;。 项目技术&#xff1a; SSM mybatis Maven Vue 等等组成&#xff0c;B/S模式 M…

一分钟带你了解音视频开发进阶(先收藏了)

FFmpeg/WebRTC/RTMP/NDK/Android音视频流媒体高级开发学习路线 随着基础设施的完善&#xff08;光纤入户、wifi覆盖、5G普及&#xff09;的影响&#xff0c;将短视频、直播、视频会议、在线教育、在线医疗瞬间推到了顶峰&#xff0c;人们对音视频的需求和要求也越来越强烈 音视…