'''
动态时钟
'''
import turtle                 # 导入绘图海龟模块
import datetime               # 导入日期时间模块# 移动一段距离
def skip(distance):          # 移动方法,不留移动痕迹turtle.penup()           # 抬笔不绘制turtle.forward(distance) # 移动指定距离turtle.pendown()         # 落笔移动绘制def draw_clock_dial():        # 绘制表盘的方法turtle.reset()           # 删除图形归位turtle.hideturtle()       # 隐藏箭头for i in range(60):       # 循环执行60次,一圈为360度所以每一秒的角度为6度skip(160)              # 移动160,相当于表盘圆的半径# 每5秒绘制一个小时刻度if i % 5 == 0:turtle.pensize(7)       # 刻度大小# 画时钟turtle.forward(20)       # 小时刻度的长度为20if i == 0:               # 判断第一个位置为12点# 写入数字12turtle.write(12, align='center', font=('Courier', 14, 'bold'))elif i == 25 or i == 30 or i == 35:    # 5、6、7skip(25)   # 避免与刻度重叠,所以多移动一段距离# 根据i除以5获取,5点、6点、7点并写入对应的数字turtle.write(int(i/5), align='center', font=('Courier', 14, 'bold'))skip(-25)  # 回到原位置else:# 根据i除以5获取其它时间的数字并写入turtle.write(int(i/5), align='center', font=('Courier', 14, 'bold'))skip(-20)      # 复原小时刻度的位置else:turtle.pensize(1)      # 将画笔大小设置为1turtle.dot()           # 绘制分钟刻度的小圆点skip(-160)                 # 回到中心位置turtle.right(6)            # 向右旋转6度def get_week(t):                   # 获取星期的方法week = ['星期一', '星期二', '星期三', '星期四', '星期五', '星期六', '星期日']return week[t.weekday()]       # 返回当天的星期def create_pointer(length, name):     # 创建指针方法turtle.reset()                 # 删除图形归位skip(-length * 0.1)            # 抬笔移动指定距离turtle.begin_poly()            # 记录多边形turtle.forward(length * 1.1)   # 绘制指定长度的指针turtle.end_poly()              # 停止记录多边形# 注册多边形状turtle.register_shape(name, turtle.get_poly())def init_pointer():                # 初始化指针global secHand, minHand, hurHand, printerturtle.mode("logo")              # 重置Turtle指向上create_pointer(135,"secHand")       # 创建秒针图形create_pointer(110,"minHand")       # 创建分针图形create_pointer(90,"hurHand")        # 创建时针图形secHand = turtle.Turtle()        # 创建秒针turtle对象secHand.shape("secHand")         # 创建指定秒针名称的形状minHand = turtle.Turtle()        # 创建分针turtle对象minHand.shape("minHand")         # 创建指定分针名称的形状hurHand = turtle.Turtle()        # 创建时针turtle对象hurHand.shape("hurHand")         # 创建指定时针名称的形状for hand in secHand, minHand, hurHand:   # 循环遍历三个指针hand.shapesize(1, 1, 5)              # 设置形状拉伸大小和轮廓线hand.speed(0)                        # 设置速度为最快printer = turtle.Turtle()                # 创建绘制文字的Turtle对象printer.hideturtle()                     # 隐藏箭头printer.penup()                          # 抬笔def move_pointer():                          # 移动指针的方法# 不停的获取时间t = datetime.datetime.today()second = t.second + t.microsecond * 0.000001    # 计算移动的秒minute = t.minute + second/60                   # 计算移动的分hour = t.hour + minute/60                       # 计算移动的小时secHand.setheading(6*second)                     # 设置秒针的角度minHand.setheading(6*minute)                     # 设置分针的角度hurHand.setheading(30*hour)                      # 设置时针的角度turtle.tracer(False)                             # 关闭绘画效果printer.forward(65)                              # 向上移动65# 绘制星期printer.write(get_week(t), align="center",font=("Courier", 14, "bold"))printer.back(130)                                # 倒退130# 绘制年月日printer.write(t.strftime('%Y-%m-%d'), align="center",font=("Courier", 14, "bold"))printer.home()                                   # 归位turtle.tracer(True)                              # 开启绘画效果turtle.ontimer(move_pointer, 10)                 # 10毫秒后调用move_pointer()方法if __name__ == '__main__':turtle.setup(450, 450)      # 创建窗体大小init_pointer()              # 调用初始化指针的方法turtle.tracer(False)        # 关闭绘画效果draw_clock_dial()            # 绘制表盘move_pointer()               # 调用移动指针的方法turtle.mainloop()            # 不关闭窗体

运行结果:

创建动态时钟(每天一个python小项目)相关推荐

  1. python秒表项目_第一个Python小项目——秒表

    一.项目描述: 前言: 这只是我今天试着写的一个小项目,这个项目我发在博客上只是为了便于保存,日后自己看起来方便,所以很多地方没有写注释,如果大家有什么想法,欢迎给我留言. 项目名称: 简易秒表 开发 ...

  2. 我写了一个Python小项目

    最近我写了一个 Python 练手小项目,它是一个 PC 桌面版的便签程序,很简陋.写这个小项目是为了熟悉一下用 Python 进行一个完整的项目开发,进一步熟练 Python 的使用. 界面是这样的 ...

  3. 使用OpenCV-Python为照片添加不同滤镜(每天一个python小项目)

    原图如下所示: 灰度滤镜 import cv2 # 导入OpenCV-Python模块 import os # 导入文件与系统模块 import numpy as np # 导入数值计算库'''* 功 ...

  4. 随机抽奖程序(每天一个python小项目)

    import random num = [] # 用于存放抽奖码 print("欢迎来到抽奖小程序!")while True:usernum = input("请输入参与 ...

  5. 幸运大转盘(每天一个python小项目)

    from turtle import * import turtle from random import randint import sys #屏幕初始化 screen = turtle.Scre ...

  6. 商品价格竞猜简易版(每天一个python小项目)

    list = [['小米手环4',209],['荣耀手环5',199],['华为手环B5',849],['ZNNCO智能血压手环',379]] order = 0 price = 0 print(&q ...

  7. 基于tkinter的随机抽奖程序(每天一个python小项目)

    import csv import tkinter as tk import tkinter.messagebox import datetime import pandas as pd import ...

  8. 九宫格切图器(每天一个python小项目)

    首先安装PIL库: import tkinter as tk from PIL import Image,ImageTk import sys import tkinter.filedialog im ...

  9. 100 个 Python 小项目源码,总有一个用得到

    学习 Python 会有这么一个阶段,太简单的程序看不上眼,复杂的开源项目又有点力不从心,这个时候,你就需要接触点简单的 Python 小项目来提升 Python 技能. 碰巧 GitHub 上有这样 ...

最新文章

  1. 产品设计体会(1001)初探用户需求
  2. 重磅!神策数据荣获华农保险 2020 年度优秀生态合作伙伴“最佳合作机构”荣誉称号...
  3. protobuf在go中的应用
  4. vue --- 前端代理发送http请求
  5. ghelper怎么在手机上用_当长时间不用手机玩《崩坏3》、《战双》
  6. spring mvc 思想
  7. @程序员,人到中年,你的保温杯里泡_____
  8. es6(var,let,const,set,map,Array.from())
  9. 计算机辅助设计autocad2005(建筑)四级考试,计算机辅助设计(AutoCAD平台)
  10. php小刀娱乐网源码,PHP精仿小刀娱乐网资源下载站网站整站源码
  11. 加拿大大学商用计算机专业,加拿大大学计算机专业排名一览
  12. 基于jsp+mysql+Spring+SpringMVC+mybatis的ssm乐轩公司订餐系统
  13. Adobe PDF打不开文件的一个解决办法
  14. 【NOIP2014】生活大爆炸版石头剪刀布
  15. Centos 7 虚拟机安装 jenkins
  16. 【数据结构与算法】之深入解析“铺瓷砖”的求解思路与算法示例
  17. 好用的小说小偷程序php,ptcms小说小偷程序最新漏洞
  18. Uni项目启动微信、QQ、淘宝、抖音、京东等APP的方法(转载)
  19. JS的some和every
  20. 『Java安全』XStream 1.4-1.4.61.4.10反序列化漏洞CVE-2013-7285复现与浅析

热门文章

  1. python+tifffile之tiff文件读写
  2. bzoj 3926 [Zjoi2015]诸神眷顾的幻想乡
  3. Vue——vue和nvue的区别
  4. 在排名是使用的函数rank()
  5. php获取url地址的方法,PHP获取当前页面完整url地址的方法
  6. 让数据分析效率再提升50%,帆软FineBI V6.0版本最新剧透
  7. HTML nav 标签
  8. jCT的纠结,前台模板下Grid基础版
  9. 计算机网络大赛原创音乐,原创歌曲“惊”动评委,京东超级新星大赛16强诞生...
  10. 树莓派python gpio 模仿iic_GPIO实现I2C协议模拟(1)