1、表盘

 from turtle import *
from datetime import * def Skip(step):#表盘不连续地画图
penup()
forward(step)
pendown() def SetupClock(radius):
#建立表的外框
reset()
pensize(7)
for i in range(60):
Skip(radius)#跨越中间这段不画
if i % 5 == 0:
forward(20)
Skip(-radius-20)#抬起画笔,回到原处
else:
dot(5)
Skip(-radius)#抬起画笔,回到圆心
right(6)#回到圆心,方向旋转6度 SetupClock(160)

2、添加指针

 from turtle import *
from datetime import * def Skip(step):#表盘不连续地画图
penup()
forward(step)
pendown() def mkHand(name, length):
#注册Turtle形状,建立表针Turtle
#清空窗口,重置默认值
Skip(-length*0.1)#先回一点
begin_poly()#初始点
forward(length*1.1)
end_poly()#结束点
handForm = get_poly()#返回最后记录的多边形
register_shape(name, handForm)#寄存器形状,安装相应的多边形
goto(0,0) def Init():
global secHand, minHand, hurHand, printer
mode("logo")# 重置Turtle指向北 #建立三个表针Turtle并初始化
mkHand("secHand", 125)
right(30)
mkHand("minHand", 110)
right(30)
mkHand("hurHand", 90) secHand = Turtle()
secHand.shape("secHand")
minHand = Turtle()
minHand.shape("minHand")
hurHand = Turtle()
hurHand.shape("hurHand") for hand in secHand, minHand, hurHand:
hand.shapesize(1, 1, 3)
hand.speed(0) #建立输出文字Turtle
printer = Turtle()
printer.hideturtle()
printer.penup() #画表框
def SetupClock(radius):
#建立表的外框
reset()
pensize(7)
for i in range(60):
Skip(radius)#跨越中间这段不画
if i % 5 == 0:
forward(20)
Skip(-radius-20)#抬起画笔,回到原处
else:
dot(5)
Skip(-radius)#抬起画笔,回到圆心
right(6)#回到圆心,方向旋转6度 Init()
tracer(False)
SetupClock(160)

3、时间

 from datetime import *
from turtle import * #时分秒
t = datetime.today()
print(t)
print(t.microsecond)
print(t.second)
second = t.second + t.microsecond*0.000001
minute = t.minute + second/60.0
hour = t.hour + minute/60.0 #星期
print(t.weekday())
week = ["星期一", "星期二", "星期三",
"星期四", "星期五", "星期六", "星期日"]
print(week[t.weekday()]) #年月日
y = t.year
m = t.month
d = t.day
# return "%s %d %d" % (y, m, d)
print(y,"-",m,"-",d) tracer(False)
mode("logo")# 重置Turtle指向北
printer = Turtle()
printer.forward(65)
printer.write(week[t.weekday()], align="center",font=("Courier", 14, "bold"))#日期标在图中
printer.back(130)
printer.write("%d-%d-%d"%(y,m,d),align="center",font=("Courier", 14, "bold"))#日期标在图中

 from datetime import *
from turtle import * #时分秒
t = datetime.today()
print(t)
print(t.microsecond)
print(t.second)
second = t.second + t.microsecond*0.000001
minute = t.minute + second/60.0
hour = t.hour + minute/60.0 #星期
print(t.weekday())
week = ["星期一", "星期二", "星期三",
"星期四", "星期五", "星期六", "星期日"]
print(week[t.weekday()]) #年月日
y = t.year
m = t.month
d = t.day
# return "%s %d %d" % (y, m, d)
print(y,"-",m,"-",d) tracer(False)
mode("logo")# 重置Turtle指向北
printer = Turtle()
printer.hideturtle()
printer.penup()#提起画笔,便没了那两道轨迹
printer.forward(65)
printer.write(week[t.weekday()], align="center",font=("Courier", 14, "bold"))#日期标在图中
printer.back(130)
printer.write("%s-%d-%d"%(y,m,d),align="center",font=("Courier", 14, "bold"))#日期标在图中
printer.home()
tracer(True)

 from datetime import *
from turtle import * def Skip(step):#表盘不连续地画图
penup()
forward(step)
pendown() def mkHand(name, length):
#注册Turtle形状,建立表针Turtle
#清空窗口,重置默认值
Skip(-length*0.1)#先回一点
begin_poly()#初始点
forward(length*1.1)
end_poly()#结束点
handForm = get_poly()#返回最后记录的多边形
register_shape(name, handForm)#寄存器形状,安装相应的多边形
goto(0,0) def Init():
global secHand, minHand, hurHand, printer
mode("logo")# 重置Turtle指向北
right(90)
#建立三个表针Turtle并初始化
mkHand("secHand", 125)
right(30)
mkHand("minHand", 110)
right(30)
mkHand("hurHand", 90) secHand = Turtle()
secHand.shape("secHand")
minHand = Turtle()
minHand.shape("minHand")
hurHand = Turtle()
hurHand.shape("hurHand") for hand in secHand, minHand, hurHand:
hand.shapesize(1, 1, 3)
hand.speed(0) #建立输出文字Turtle
printer = Turtle()
printer.hideturtle()
printer.penup() #画表框
def SetupClock(radius):
#建立表的外框
reset()
pensize(7)
for i in range(60):
Skip(radius)#跨越中间这段不画
if i % 5 == 0:
forward(20)
Skip(-radius-20)#抬起画笔,回到原处
else:
dot(5)
Skip(-radius)#抬起画笔,回到圆心
right(6)#回到圆心,方向旋转6度 tracer(False)
Init()
SetupClock(160)
tracer(True) #时分秒
t = datetime.today()
print(t)
print(t.microsecond)
print(t.second)
second = t.second + t.microsecond*0.000001
minute = t.minute + second/60.0
hour = t.hour + minute/60.0 #星期
print(t.weekday())
week = ["星期一", "星期二", "星期三",
"星期四", "星期五", "星期六", "星期日"]
print(week[t.weekday()]) #年月日
y = t.year
m = t.month
d = t.day
# return "%s %d %d" % (y, m, d)
print(y,"-",m,"-",d) tracer(False)
#mode("logo")# 重置Turtle指向北
printer = Turtle()
printer.penup()
printer.hideturtle()
printer.forward(65)
printer.write(week[t.weekday()], align="center",font=("Courier", 14, "bold"))#日期标在图中
printer.back(130)
printer.write("%d-%d-%d"%(y,m,d), align="center",font=("Courier", 14, "bold"))#日期标在图中
tracer(True)

4、动态显示

将时间和角度对应起来,换算到角度,然后和指针对应起来

 from turtle import *
from datetime import * def Skip(step):#表盘不连续地画图
penup()
forward(step)
pendown() def mkHand(name, length):
#注册Turtle形状,建立表针Turtle
reset()
Skip(-length*0.1)
begin_poly()#多边形第一个顶点
forward(length*1.1)
end_poly()
handForm = get_poly()
register_shape(name, handForm) def Init():
global secHand, minHand, hurHand, printer
mode("logo")# 重置Turtle指向北,为后续角度提供便利
#建立三个表针Turtle并初始化
mkHand("secHand", 125)
mkHand("minHand", 115)
mkHand("hurHand", 90)
secHand = Turtle()
secHand.shape("secHand")
minHand = Turtle()
minHand.shape("minHand")
hurHand = Turtle()
hurHand.shape("hurHand")
for hand in secHand, minHand, hurHand:
hand.shapesize(1, 1, 3)
hand.speed(0)
#建立输出文字Turtle
printer = Turtle()
printer.hideturtle()
printer.penup() #画表框
def SetupClock(radius):
#建立表的外框
reset()
pensize(7)
for i in range(60):
Skip(radius)#跨越中间这段不画
if i % 5 == 0:
forward(20)
Skip(-radius-20)#抬起画笔,回到原处
else:
dot(5)
Skip(-radius)#抬起画笔,回到圆心
right(6)#回到圆心,方向旋转6度 def Week(t):
week = ["星期一", "星期二", "星期三",
"星期四", "星期五", "星期六", "星期日"]
return week[t.weekday()] def Date(t):
y = t.year
m = t.month
d = t.day
return "%s %d %d" % (y, m, d) def Tick():
#绘制表针的动态显示
t = datetime.today()
second = t.second + t.microsecond*0.000001
minute = t.minute + second/60.0
hour = t.hour + minute/60.0
secHand.setheading(6*second)
minHand.setheading(6*minute)
hurHand.setheading(30*hour) 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() tracer(True) ontimer(Tick, 100)#100ms后继续调用tick def main():
tracer(False)#不刷新,最后一次刷新,省时间
Init()
SetupClock(160)
tracer(True)
Tick()
mainloop() if __name__ == "__main__":
main()

python ——钟表的更多相关文章

  1. 有限状态机(Python)

    有限状态机(Finite-state machine, FSM),又称有限状态自动机,简称状态机,是表示有限个状态以及在这些状态之间的转移和动作等行为的数学模型.FSM是一种算法思想,简单而言,有限状 ...

  2. Python::OS 模块 -- 进程管理

    os模块的简介参看 Python::OS 模块 -- 简介 os模块的文件相关操作参看 Python::OS 模块 -- 文件和目录操作 os模块的进程参数 Python::OS 模块 -- 进程参数 ...

  3. D14——C语言基础学PYTHON

    C语言基础学习PYTHON——基础学习D14 20180919内容纲要: 1.html认识 2.常用标签 3.京东html 4.小结 5.练习(简易淘宝html) 1.html初识(HyperText ...

  4. tensorflow和python操作中的笔记

    前一段时间做了一些项目,把一些笔记放在了txt中,现分享出来,自己也能够时长预习. 1) 读取文件时,将固定的文件地址,采用数组或者字符串的形式,提前表示出来,后期使用时候采用拼接操作 2) # 得到 ...

  5. 【python】列出http://www.cnblogs.com/xiandedanteng中所有博文的标题

    代码: # 列出http://www.cnblogs.com/xiandedanteng中所有博文的标题 from bs4 import BeautifulSoup import requests u ...

  6. Python练手项目实例汇总(附源码下载)

    今天给大家分享几个有趣的Python练手项目实例,希望对Python初学者有帮助哈~ 一.经典的俄罗斯方块   1. 绑定功能 1 # 绑定功能 2 class App(Frame): 3 def _ ...

  7. Python中的多进程与多线程(一)

    一.背景 最近在Azkaban的测试工作中,需要在测试环境下模拟线上的调度场景进行稳定性测试.故而重操python旧业,通过python编写脚本来构造类似线上的调度场景.在脚本编写过程中,碰到这样一个 ...

  8. Python高手之路【六】python基础之字符串格式化

    Python的字符串格式化有两种方式: 百分号方式.format方式 百分号的方式相对来说比较老,而format方式则是比较先进的方式,企图替换古老的方式,目前两者并存.[PEP-3101] This ...

  9. Python 小而美的函数

    python提供了一些有趣且实用的函数,如any all zip,这些函数能够大幅简化我们得代码,可以更优雅的处理可迭代的对象,同时使用的时候也得注意一些情况   any any(iterable) ...

随机推荐

  1. php表单提交后再后退 内容则默认清空的解决方法

    转载原文地址: http://www.jquerycn.cn/a_14422 在session_start()之后,字符输出之前加上header("Cache-control: privat ...

  2. PHPRAP 1.0.2 发布,修复安装失败 Bug 和优化细节

    PHPRAP,是一个PHP轻量级开源API接口文档管理系统,致力于减少前后端沟通成本,提高团队协作开发效率,打造PHP版的RAP. 更新记录 [修复]修复在MySQL5.5版本下安装数据初始化sql文 ...

  3. win10查看本机mac地址的详细操作

    今天和大家分享win10查看本机mac地址的方法,mac地址是什么东西?MAC地址实际上就是网卡的一个标识,和身份证号码类似,大多数情况下是不需要关心MAC地址是多少的,一般不能改动,所以也不会重复. ...

  4. Yuchuan_Linux_C 编程之十 进程及进程控制

    一.整体大纲 二.基础知识 1. 进程相关概念 1)程序和进程 程序,是指编译好的二进制文件,在磁盘上,不占用系统资源(cpu.内存.打开的文件.设备.锁....)     进程,是一个抽象的概念,与 ...

  5. python-面向对象小结

    面向对象 小结 1:面向对象:就是一种编程思想 简称oop,指挥某某完成能完成的功能 2:面向对象与面向过程的优缺点 : 面向过程: 优点: 复杂问题简答化(一步一步解决), 流程化, 缺点:机械化 ...

  6. iNeuOS工业互联平台,开放设备驱动管理、服务驱动管理、云组态自定义画布等,促进平台开放、赋能和落地。发布:v2.3版本。

    目       录 1.      概述... 2 2.      iNeuOS平台演示... 2 3.      设备驱动管理... 2 4.      服务驱动管理... 3 5.      云组 ...

  7. python第一次作业

    import turtle turtle.pensize(2) turtle.pencolor("black") turtle.fillcolor("red") ...

  8. Drf(DjangoRestFramewok)

    第一部分 问题 1.前后端分离? vue.js 后端给前段返回json数据 2.移动端盛行. app 后端给app返回json数据 3.PC端应用? crm项目,前段后端一起写,运行在浏览器上. 一般 ...

  9. ES6中的find与filter的区别

    一直以来以为find和filter是一样的效果,最近在梳理,才发现是不一样的. 首先,filter和find区别:filter返回的是数组,find返回的是对象. 注意:find()找到第一个元素后就 ...

  10. 3分钟入门lambda表达式

    本节是lambda表达式的一个入门课,讲解的同时配有练习demo 前言什么是lambda表达式?基础语法函数式接口自己实现一个函数式接口jdk提供的函数式接口Consumersupplierfunct ...