import turtle as t
import datetime as d
def skip(step): #抬笔,跳到一个地方
t.penup()
t.fd(step)
t.pendown()
def drawClock(radius): #画表盘
t.speed(10)
t.mode("logo") #以logo坐标、角度方式
t.hideturtle()
t.pensize(7)
t.home() #回到原点
for j in range(60): #0~59
skip(radius)
if (j%5==0): #%是取余==等于号
t.forward(20)
skip(-radius-20)
else:
t.dot(5)
skip(-radius)
t.right(6)
drawClock(150) #调用表盘程序
def makePoint(pointName,len): #钟的指针,时针、分针、秒针
t.penup()
t.home()
t.begin_poly()
t.back(0.1*len)
t.fd(len*1.1)
t.end_poly()
poly=t.get_poly()
t.register_shape(pointName,poly) #注册为一个shape
#makePoint("hour",100)
def drawPoint(): #画指针
global hourPoint,minPoint,secPoint,fontWriter
makePoint("hourPoint",100)
makePoint("minPoint",120)
makePoint("secPoint",140)
hourPoint=t.Pen() #每个指针是一只新turtle
hourPoint.shape("hourPoint")
hourPoint.shapesize(1,1,6)
minPoint=t.Pen()
minPoint.shape("minPoint")
minPoint.shapesize(1,1,4)
secPoint=t.Pen()
secPoint.shape("secPoint")
secPoint.pencolor('blue')
fontWriter=t.Pen()
fontWriter.pencolor('yellow')
fontWriter.hideturtle()
drawPoint()
def getWeek(weekday):
weekName=['星期一','星期二','星期三','星期四','星期五','星期六','星期天']
return weekName[weekday]
def getDate(year,month,day):
return "%s-%s-%s"%(year,month,day)
def getRealtime():
curr=d.datetime.now()
curr_year=curr.year
curr_month=curr.month
curr_day=curr.day
curr_hour=curr.hour
curr_minute=curr.minute
curr_second=curr.second
curr_weekday=curr.weekday()
t.tracer(False)
secPoint.setheading(360/60*curr_second)
minPoint.setheading(360/60*curr_minute)
hourPoint.setheading(360/12*curr_hour+30/60*curr_minute)
fontWriter.clear()
fontWriter.home()
fontWriter.penup()
fontWriter.fd(80)
fontWriter.write(getWeek(curr_weekday),align="center",font=("Courier",14,"bold"))
fontWriter.fd(-160)
fontWriter.write(getDate(curr_year,curr_month,curr_day),align="center",font=("Courier",14,"bold"))
t.tracer(True)
print(curr_second)
t.ontimer(getRealtime,1000)
def main():
t.tracer(False)
drawClock(160)
drawPoint()
getRealtime()
t.tracer(True)
t.mainloop()
main()
- import datetime as d
a=d.datetime.now()
type(a)
a是一个日期时间型的变量
a.year a.month a.day 时分秒星期.
二、tracer() 追踪,痕迹
t.tracer(f) +要配合update()使用更新
false true
三、时针角度的计算:
hourPoint.setheading(360 / 12 * curr_ hour + 30/ 60 * curr_ minute) 四、# 用turtle写文字
fontWriter.write(getWeek(curr_ weekday), align="center", font=("Courier", 14, "bold")) - 五、间隔调用
t.ontimer(getRealtime, 1000) #每隔1000毫秒调用一次realTime()