importturtlefrom datetime import *

#抬起画笔,向前运动一段距离放下

defskip(step):

turtle.penup()

turtle.forward(step)

turtle.pendown()defmkHand(name, length):#注册Turtle形状,建立表针Turtle

turtle.reset()#先反向运动一段距离,终点作为绘制指针的起点

skip(-length * 0.1)#开始记录多边形的顶点。当前的乌龟位置是多边形的第一个顶点。

turtle.begin_poly()

turtle.forward(length* 1.1)#停止记录多边形的顶点。当前的乌龟位置是多边形的最后一个顶点。将与第一个顶点相连。

turtle.end_poly()#返回最后记录的多边形。

handForm =turtle.get_poly()

turtle.register_shape(name, handForm)definit():globalsecHand, minHand, houHand, printer#重置Turtle指向北

turtle.mode("logo")#建立三个表针Turtle并初始化

mkHand("secHand", 135)

mkHand("minHand", 125)

mkHand("houHand", 90)

secHand=turtle.Turtle()

secHand.shape("secHand")

minHand=turtle.Turtle()

minHand.shape("minHand")

houHand=turtle.Turtle()

houHand.shape("houHand")for hand insecHand, minHand, houHand:

hand.shapesize(1, 1, 3)

hand.speed(0)#建立输出文字Turtle

printer =turtle.Turtle()#隐藏画笔的turtle形状

printer.hideturtle()

printer.penup()#绘制表盘

defsetupClock(radius):#建立表的外框

turtle.reset()

turtle.pensize(7)for i in range(60):#向前移动半径值

skip(radius)if i % 5 ==0:#画长刻度线

turtle.forward(20)#回到中心点

skip(-radius - 20)#移动到刻度线终点

skip(radius + 20)#下面是写表盘刻度值,为了不与划线重叠,所以对于特殊位置做了处理

if i ==0:

turtle.write(int(12), align="center", font=("Courier", 14, "bold"))elif i == 30:

skip(25)

turtle.write(int(i/ 5), align="center", font=("Courier", 14, "bold"))

skip(-25)elif (i == 25 or i == 35):

skip(20)

turtle.write(int(i/ 5), align="center", font=("Courier", 14, "bold"))

skip(-20)else:

turtle.write(int(i/ 5), align="center", font=("Courier", 14, "bold"))#回到中心点

skip(-radius - 20)else:#画圆点

turtle.dot(5)

skip(-radius)#顺时针移动6°

turtle.right(6)defweek(t):

week= ["星期一", "星期二", "星期三","星期四", "星期五", "星期六", "星期日"]returnweek[t.weekday()]defdate(t):

y=t.year

m=t.month

d=t.dayreturn "%s %d%d" %(y, m, d)deftick():#绘制表针的动态显示

t =datetime.today()

second= t.second + t.microsecond * 0.000001minute= t.minute + second / 60.0hour= t.hour + minute / 60.0secHand.setheading(6 *second)

minHand.setheading(6 *minute)

houHand.setheading(30 *hour)

turtle.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()

turtle.tracer(True)#100ms后继续调用tick

turtle.ontimer(tick, 100)defmain():#打开/关闭龟动画,并为更新图纸设置延迟。

turtle.tracer(False)

init()

setupClock(160)

turtle.tracer(True)

tick()

turtle.mainloop()if __name__ == "__main__":

main()

python小程序源代码-Python小项目:开发一个动态时钟小程序(附源码)相关推荐

  1. python动态电子时钟包装_Python小项目:开发一个动态时钟小程序(附源码)

    importturtlefrom datetime import * #抬起画笔,向前运动一段距离放下 defskip(step): turtle.penup() turtle.forward(ste ...

  2. 【程序人生】卡塔尔世界杯元素python海龟绘图(附源代码),世界杯主题前端特效5个(附源码)

    卡塔尔世界杯元素python海龟绘图(附源代码) 世界杯主题前端特效5个(附源码)程序人生 本文目录: 一.python turtle海龟绘图卡塔尔世界杯元素 (1).绘制效果图 (2).代码演示方法 ...

  3. 小程序云开发实现登录与注册(附源码)

    小程序云开发实现登录与注册(附源码) 1. 看效果 2.wxss <view class="v1"><!-- v2父容器 子view使用绝对布局 -->&l ...

  4. Python爬虫鲁迅先生《经典语录》保存到Excel表格(附源码)

    Python爬虫鲁迅先生<经典语录>保存到Excel表格(附源码) 前言 今天用Python 爬取鲁迅先生<经典语录>,直接开整~ 代码运行效果展示 开发工具 Python版本 ...

  5. 20220517 Python 制作一个儿童学习软件 (附源码和软件下载) 包含语音合成 视频播放 pyqt pptsx3 Qmovie request pygame 音频播放

    20220517 Python 制作一个儿童学习软件 (附源码和软件下载) 包含语音合成 视频播放 pyqt pptsx3 Qmovie request pygame 音频播放 文章目录 202205 ...

  6. vscode中安装webpack_leaflet-webpack 入门开发系列一初探篇(附源码下载)

    前言 leaflet-webpack 入门开发系列环境知识点了解: node 安装包下载 webpack 打包管理工具需要依赖 node 环境,所以 node 安装包必须安装,上面链接是官网下载地址w ...

  7. JAVA毕业设计vue开发一个简单音乐播放器计算机源码+lw文档+系统+调试部署+数据库

    JAVA毕业设计vue开发一个简单音乐播放器计算机源码+lw文档+系统+调试部署+数据库 JAVA毕业设计vue开发一个简单音乐播放器计算机源码+lw文档+系统+调试部署+数据库 本源码技术栈: 项目 ...

  8. Adroid游戏开发实例讲解(三)-小蝌蚪找妈妈附源码

    Adroid游戏开发实例讲解(三)-小蝌蚪找妈妈附源码 程序之美 从小就听着小蝌蚪找妈妈的故事长大,我相信小伙伴们一定都不陌生,因为小学课本中,我们早早的就学过了小蝌蚪找妈妈这篇文章,它既是一篇文章, ...

  9. Java毕设项目大学生校园兼职系统计算机(附源码+系统+数据库+LW)

    Java毕设项目大学生校园兼职系统计算机(附源码+系统+数据库+LW) 项目运行 环境配置: Jdk1.8 + Tomcat8.5 + Mysql + HBuilderX(Webstorm也行)+ E ...

最新文章

  1. java保存不了_在使用Java写入文件时,文件不能保存在文件夹中
  2. php 防止按住f5不松,WordPress如何防御(频繁F5刷新)的解决方法
  3. Sizzle系列之 选择元素
  4. 209. 单点登录(SSO)
  5. Angular compiler报的一个错误消息:Component XX is not part of any NgModule
  6. ASP.NET Core使用功能开关控制路由访问
  7. 高性能MySQL(2)——Schema与数据类型的优化
  8. 我每天路过胡同的飞鸽传书
  9. python open函数 创建变量文件_python的open函数怎么用
  10. 《Algorithms》Comparable 实现选择排序
  11. LeetCode 939. Minimum Area Rectangle (最小面积矩形)
  12. 2021-09-10二叉树的层序遍历
  13. 编写 USB 存储设备使用痕迹检测和删除工具
  14. 用excel做数据分析
  15. 实验三linux进程并发程序设计,实验三Linux进程并发程序设计.doc
  16. python3-曲线拟合(polyfit/polyval)
  17. TF_REPEATED_DATA ignoring data with redundant timestamp for frame left_wheel at time
  18. 浪潮存储加速国产替代
  19. Linux-Socket实现模拟群聊(多人聊天室)
  20. Angularjs DataTable表格自动刷新

热门文章

  1. 超大 Cookie 拒绝服务攻击
  2. 机器学习算法库scikit-learn的安装
  3. 欧盟中止对中国数据卡产品“两反一保”调查
  4. C# 3.0新特性系列(1):隐含类型局部变量
  5. GoWeb开发_Iris框架讲解(三):路由功能处理方式
  6. 洛谷:P1901 发射站
  7. 初学Python——文件操作第二篇
  8. getline及读文件总结
  9. 设计模式之Prototype(原型)(转)
  10. link2005 重复定义错误