100字范文,内容丰富有趣,生活中的好帮手!
100字范文 > turtle库的使用数字时钟模拟时钟动态显示

turtle库的使用数字时钟模拟时钟动态显示

时间:2023-11-10 06:40:36

相关推荐

turtle库的使用数字时钟模拟时钟动态显示

使用turtle 绘制数字时钟和模拟时钟。

模拟时钟代码

# -*- coding:utf-8 –*-# 用turtlr画时钟# 以自定义shape的方式实现import turtle as timport datetime as ddef skip(step): # 抬笔,跳到一个地方t.penup()t.forward(step)t.pendown()def drawClock(radius): # 画表盘t.speed(0)t.mode("logo") # 以Logo坐标、角度方式t.hideturtle()t.pensize(7)t.home() # 回到圆点for j in range(60):skip(radius)if (j % 5 == 0):t.forward(20)skip(-radius - 20)else:t.dot(5)skip(-radius)t.right(6)def makePoint(pointName, len): # 钟的指针,时针、分针、秒针t.penup()t.home()t.begin_poly()t.back(0.1 * len)t.forward(len * 1.1)t.end_poly()poly = t.get_poly()t.register_shape(pointName, poly) # 注册为一个shapedef drawPoint(): # 画指针global hourPoint, minPoint, secPoint, fontWritermakePoint("hourPoint", 100)makePoint("minPoint", 120)makePoint("secPoint", 140)hourPoint = t.Pen() # 每个指针是一只新turtlehourPoint.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('red')fontWriter = t.Pen()fontWriter.pencolor('gray')fontWriter.hideturtle()def getWeekName(weekday):weekName = ['星期一', '星期二', '星期三', '星期四', '星期五', '星期六', '星期日']return weekName[weekday]def getDate(year, month, day):return "%s-%s-%s" % (year, month, day)def realTime():curr = d.datetime.now()curr_year = curr.yearcurr_month = curr.monthcurr_day = curr.daycurr_hour = curr.hourcurr_minute = curr.minutecurr_second = curr.secondcurr_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.forward(80)# 用turtle写文字fontWriter.write(getWeekName(curr_weekday), align="center", font=("Courier", 14, "bold"))fontWriter.forward(-160)fontWriter.write(getDate(curr_year, curr_month, curr_day), align="center", font=("Courier", 14, "bold"))t.tracer(True)print(curr_second)t.ontimer(realTime, 100) # 每隔100毫秒调用一次realTime()def main():t.tracer(False)drawClock(160)drawPoint()realTime()t.tracer(True)t.mainloop()main()

数字时钟代码

import turtleimport timefrom datetime import datetimedef drawGap():turtle.penup()turtle.fd(5)def drawLine(draw):drawGap()turtle.pendown() if draw else turtle.penup()turtle.fd(40)drawGap()turtle.right(90)def drawDigit(digit):drawLine(True) if digit in [2, 3, 4, 5, 6, 8, 9] else drawLine(False)drawLine(True) if digit in [0, 1, 3, 4, 5, 6, 7, 8, 9] else drawLine(False)drawLine(True) if digit in [0, 2, 3, 5, 6, 8, 9] else drawLine(False)drawLine(True) if digit in [0, 2, 6, 8] else drawLine(False)turtle.left(90)drawLine(True) if digit in [0, 4, 5, 6, 8, 9] else drawLine(False)drawLine(True) if digit in [0, 2, 3, 5, 6, 7, 8, 9] else drawLine(False)drawLine(True) if digit in [0, 1, 2, 3, 4, 7, 8, 9] else drawLine(False)turtle.left(180)turtle.penup()turtle.fd(20)def drawDate(date):turtle.pencolor("red")for i in date:if i == "-":turtle.write("年",font=('Arial',18,'normal'))turtle.pencolor('green')turtle.fd(40)elif i == "=":turtle.write("月",font=('Arial',18,'normal'))turtle.pencolor('blue')turtle.fd(40)elif i == "+":turtle.write("日",font=('Arial',18,'normal'))turtle.pencolor("red")turtle.fd(40)elif i == "*":turtle.write("时",font=('Arial',18,'normal'))turtle.pencolor('green')turtle.fd(40)elif i == "#":turtle.write("分",font=('Arial',18,'normal'))turtle.pencolor('blue')turtle.fd(40)elif i == "?":turtle.write("秒",font=('Arial',18,'normal'))else:drawDigit(eval(i))def main():turtle.setup(1300,350)turtle.penup()turtle.fd(-300)turtle.pensize(5)while True:turtle.penup()turtle.goto(-600,0)turtle.pendown()turtle.tracer(False)turtle.pencolor("red")drawDate(datetime.now().strftime('%Y-%m=%d+%H*%M#%S?'))turtle.hideturtle()time.sleep(1)turtle.clear()turtle.done()main()

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。