python ——钟表
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 ——钟表的更多相关文章
- 有限状态机(Python)
有限状态机(Finite-state machine, FSM),又称有限状态自动机,简称状态机,是表示有限个状态以及在这些状态之间的转移和动作等行为的数学模型.FSM是一种算法思想,简单而言,有限状 ...
- Python::OS 模块 -- 进程管理
os模块的简介参看 Python::OS 模块 -- 简介 os模块的文件相关操作参看 Python::OS 模块 -- 文件和目录操作 os模块的进程参数 Python::OS 模块 -- 进程参数 ...
- D14——C语言基础学PYTHON
C语言基础学习PYTHON——基础学习D14 20180919内容纲要: 1.html认识 2.常用标签 3.京东html 4.小结 5.练习(简易淘宝html) 1.html初识(HyperText ...
- tensorflow和python操作中的笔记
前一段时间做了一些项目,把一些笔记放在了txt中,现分享出来,自己也能够时长预习. 1) 读取文件时,将固定的文件地址,采用数组或者字符串的形式,提前表示出来,后期使用时候采用拼接操作 2) # 得到 ...
- 【python】列出http://www.cnblogs.com/xiandedanteng中所有博文的标题
代码: # 列出http://www.cnblogs.com/xiandedanteng中所有博文的标题 from bs4 import BeautifulSoup import requests u ...
- Python练手项目实例汇总(附源码下载)
今天给大家分享几个有趣的Python练手项目实例,希望对Python初学者有帮助哈~ 一.经典的俄罗斯方块 1. 绑定功能 1 # 绑定功能 2 class App(Frame): 3 def _ ...
- Python中的多进程与多线程(一)
一.背景 最近在Azkaban的测试工作中,需要在测试环境下模拟线上的调度场景进行稳定性测试.故而重操python旧业,通过python编写脚本来构造类似线上的调度场景.在脚本编写过程中,碰到这样一个 ...
- Python高手之路【六】python基础之字符串格式化
Python的字符串格式化有两种方式: 百分号方式.format方式 百分号的方式相对来说比较老,而format方式则是比较先进的方式,企图替换古老的方式,目前两者并存.[PEP-3101] This ...
- Python 小而美的函数
python提供了一些有趣且实用的函数,如any all zip,这些函数能够大幅简化我们得代码,可以更优雅的处理可迭代的对象,同时使用的时候也得注意一些情况 any any(iterable) ...
随机推荐
- Linq的整型或实体类null引发的报错问题
经常在程序中遇到两个空值报错问题: 问题1:int类型如果为不可空,假如传进去null,会报错 问题2:EF的获得单个实体的Model如果为空,那么后面如果跟上属性会报错 解决问题1: 一般属性都设为 ...
- ubuntu16.04安装库、插件报错:
安装一些插件.库,遇到报错 Could not fetch URL https://pypi.org/simple/pytest-pycodestyle/: There was a problem c ...
- 基于springcloud搭建项目-Feign篇(四)
上一篇已经写过ribbon客户端负载均衡的用法了,这篇主要是介绍feign的用法,首先我们必须了解feign是什么?能干嘛?怎么用? 这里简单介绍一下,然后进行代码测试 1.概述 Feign是一个声明 ...
- JS中面向对象中的继承(常用写法)---核心部分
1.基本概念 子类继承父类,但是不能影响父类.包括1.混合继承(构造函数+原型) 2.ES6新增class的继承. 接下来介绍,面向对象中继承的两种常用写法.即混合继承(构造函数+原型)和class继 ...
- php -v 找不到命令
[root@localhost htdocs]# php -v -bash: php: command not found export PATH=$PATH:/usr/local/php7/bin ...
- ASP.NET Core 中jwt授权认证的流程原理
目录 1,快速实现授权验证 1.1 添加 JWT 服务配置 1.2 颁发 Token 1.3 添加 API访问 2,探究授权认证中间件 2.1 实现 Token 解析 2.2 实现校验认证 1,快速实 ...
- JVM进阶:JVM的监控利器
每次聊起性能测试,最后的终极话题就是怎么做优化.其实在Java的复杂项目中都会有内存不足问题.内存泄露问题.线程死锁问题.CPU问题.这些问题在小压力的情况下有可能并不明显,很容易被忽视.但是真正到了 ...
- Geotools中读取shapefile路网数据,并创建DirectedGraph
记录一下如何创建DirectedGraph,便于以后查找使用 static ShapefileDataStore sds= null; static DirectedGraph graph = nul ...
- 还是只使用console.log()进行调试?好吧,其实还有更多。
在浏览器控制台中打印消息无疑可以拯救所有开发人员. console.log()消息就像您的大多数疾病的药,同时调试了代码中的一些有线问题. 那里的大多数开发人员都喜欢— 让我们在浏览器中打印消息以了解 ...
- Cisco 模拟配置
本次模拟:采用Cisco Packet Tracer 软件,进行cisco网络设备的模拟.可以实现CLI界面命令配置,同实际交换机一样. 1.同一VLAN 可以互相访问,不同VLAN 不能访问 PC0 ...