使用python画出时钟效果
2020-06-23 15:00
阅读数 14
python生成的时钟效果,大家可以参考:
使用的python版本:3.7.0 ,以下为源代码:
# time.py from turtle import * from datetime import * import time def
SetupClock(radius): #建立表的外框 reset() pensize() for i in range(60): Skip(radius)
if i % 5 == 0: forward(20) Skip(-radius-20) else: dot(5) Skip(-radius) right(6)
def Skip(step): penup() forward(step) pendown() #定义表针函数mkHand() def
mkHand(name, length): #注册Turtle形状,建立表针Turtle reset() Skip(-length*0.1)
begin_poly() forward(length*1.1) end_poly() handForm = get_poly()
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("secHand") hurHand =
Turtle() hurHand.shape("secHand") for hand in secHand, minHand, hurHand:
hand.shapesize(1, 1, 3) hand.speed(0) #建立输出文字Turtle printer = Turtle()
printer.hideturtle() printer.penup() def get_week_day(): week_day_dict = { 0 :
'星期一', 1 : '星期二', 2 : '星期三', 3 : '星期四', 4 : '星期五', 5 : '星期六', 6 : '星期天', }
today = int(time.strftime("%w")) return week_day_dict[today] #更新时钟函数Tick() def
Tick(): #绘制表针的动态显示 t = datetime.today() second = t.second +
t.microsecond*0.000001 minute = t.minute + second/60.0 hour = t.hour +
minute/60.0 tracer(False) printer.forward(65) # print(get_week_day())
printer.write(get_week_day(), align="center", font=("Courier", 14, "bold"))
printer.back(130) printer.write((str(t.year)+"-"+str(t.month)+"-"+str(t.day)),
align="center", font=("Courier", 14, "bold")) printer.home() tracer(True)
secHand.setheading(6*second) minHand.setheading(6*minute)
hurHand.setheading(30*hour) ontimer(Tick, 100) #100ms后继续调用tick def main():
tracer(False) Init() SetupClock(160) tracer(True) Tick() mainloop() if __name__
== '__main__': main()