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

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

在这里插入图片描述
在这里插入图片描述
模拟时钟代码

# -*- coding:utf-8 –*-
# 用turtlr画时钟
# 以自定义shape的方式实现
import turtle as t
import datetime as d
def 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)  # 注册为一个shape
def 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 turtle
import time
from 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()


本文来自互联网用户投稿,文章观点仅代表作者本人,不代表本站立场,不承担相关法律责任。如若转载,请注明出处。 如若内容造成侵权/违法违规/事实不符,请点击【内容举报】进行投诉反馈!

相关文章

立即
投稿

微信公众账号

微信扫一扫加关注

返回
顶部