gpt4 book ai didi

python实现简易数码时钟

转载 作者:qq735679552 更新时间:2022-09-27 22:32:09 25 4
gpt4 key购买 nike

CFSDN坚持开源创造价值,我们致力于搭建一个资源共享平台,让每一个IT人在这里找到属于你的精彩世界.

这篇CFSDN的博客文章python实现简易数码时钟由作者收集整理,如果你对这篇文章有兴趣,记得点赞哟.

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

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

python实现简易数码时钟

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

?
1
2
3
import threading
import turtle
import time

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

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
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实现简易数码时钟

绘制数码管函数:

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
# 绘制单根数码管
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库实现定时刷新:

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
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()

最后定义一个入口函数:

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
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,因为语法简洁所以代码的缩进很重要,这也算是一个小坑吧,不过熟能生巧,还需多多练习.

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持我.

原文链接:https://blog.csdn.net/u010815486/article/details/82940392 。

最后此篇关于python实现简易数码时钟的文章就讲到这里了,如果你想了解更多关于python实现简易数码时钟的内容请搜索CFSDN的文章或继续浏览相关文章,希望大家以后支持我的博客! 。

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com