语言:Python
IDE:Python.IDE
1.编写时钟程序,要求根据时间动态更新
2.代码思路
需求:5个Turtle对象, 1个绘制外表盘+3个模拟表上针+1个输出文字
Step1:建立Turtle对象并初始化
Step2:静态表盘绘制
Step3:根据时钟更新表针位置与时间信息
基本库:Turtle、datetime
3.代码段
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
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
|
from turtle import *
from datetime import *
def Skip(step):
penup()
forward(step)
pendown()
def mkHand(name, length):
#注册Turtle形状,建立表针Turtle
reset()
Skip( - length * 0.1 )
begin_poly()
forward(length * 1.1 )
end_poly()
handForm = get_poly()
#注册Turtle形状命令register_shape(name,shape=None)
register_shape(name, handForm)
def Init():
global secHand, minHand, hurHand, printer
mode( "logo" ) # 重置Turtle指向北
#建立三个表针Turtle并初始化
#第二个参数为长度
mkHand( "secHand" , 125 )
mkHand( "minHand" , 130 )
mkHand( "hurHand" , 90 )
secHand = Turtle()
secHand.shape( "secHand" )
minHand = Turtle()
minHand.shape( "minHand" )
hurHand = Turtle()
hurHand.shape( "hurHand" )
for hand in secHand, minHand, hurHand:
hand.shapesize( 1 , 1 , 3 )
hand.speed( 0 )
#建立输出文字Turtle
printer = Turtle()
printer.hideturtle()
printer.penup()
def SetupClock(radius):
#建立表的外框
reset()
pensize( 7 )
for i in range ( 60 ):
Skip(radius)
if i % 5 = = 0 :
forward( 20 )
Skip( - radius - 20 )
else :
dot( 5 )
Skip( - radius)
right( 6 )
def Week(t):
week = [ "星期一" , "星期二" , "星期三" ,
"星期四" , "星期五" , "星期六" , "星期日" ]
return week[t.weekday()]
def Date(t):
y = t.year
m = t.month
d = t.day
return "%s %d %d" % (y, m, d)
def Tick():
#绘制表针的动态显示
#当前时间
t = datetime.today()
second = t.second + t.microsecond * 0.000001
minute = t.minute + second / 60.0
hour = t.hour + minute / 60.0
secHand.setheading( 6 * second)
minHand.setheading( 6 * minute)
hurHand.setheading( 30 * hour)
#介入Tracer函数以控制刷新速度
tracer( False )
printer.forward( 65 )
printer.write(Week(t), align = "center" ,
font = ( "Courier" , 14 , "bold" ))
printer.back( 130 )
printer.write(Date(t), align = "center" ,
font = ( "Courier" , 14 , "bold" ))
printer.home()
tracer( True )
ontimer(Tick, 100 ) #100ms后继续调用tick
def main():
tracer( False )
Init()
SetupClock( 160 )
tracer( True )
Tick()
mainloop()
if __name__ = = "__main__" :
main()
|
补充:
Python实现时钟
1.小时钟获取当前时间并用打印在Console上
2.上代码
1
2
3
4
5
6
7
|
import time,sys,os
while ( 1 ):
t = time.strftime( '%H:%M:%S' ,time.localtime(time.time()))
sys.stdout.write(t + '\b' * 10 )
sys.stdout.flush()
time.sleep( 0.1 )
os.system( 'cls' )
|
3.解释
第一步:导入time,sys,os模块
第二部:实现无限循环
第三步:实现格式化输出,具体的详细使用方法,参见:这里
第四部:重定向到Console上
第五步:刷新
第六步:间隔0.1执行一次
第七步:清屏
原文链接:https://blog.csdn.net/qq_41352018/article/details/79879718