python编程-17:turtle绘制时钟程序
标签:
python |
分类: 科技 |
源码:
-
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() -
register_shape(name,handForm) -
-
def
Init(): -
globalsecHand, 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") -
forhand 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) -
fori in range(60): -
Skip(radius) -
ifi % 5 == 0: -
forward(20) -
Skip(-radius-20) -
else: -
dot(5) -
Skip(-radius) -
right(6) -
-
def
Week(t): -
week= ["星期一", "星期二", "星期三", -
"星期四","星期五", "星期六", "星期日"] -
returnweek[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(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()

加载中…